2017-02-24 81 views
0

我目前的MO号JTextFiled包括“1234567-001” 我只想要一个文本文件中的“1234567”(7位数字)。 另一个“001”会自动转到下一个文本。由新JTextFiled拆分Java字符串

请参考截图了解更多详情。

Current Implementation

Excepted Result

下面,这里是我的代码,我想:

txtMoNo = new JTextField(); 
     //set limit 7 key 
     //txtMoNo.setDocument(new JTextFieldLimit(7)); 
     txtMoNo.addFocusListener(new FocusAdapter() { 
      @Override 
      public void focusLost(FocusEvent arg0) { 


       //if (txtMoNo.getText().equals("")) { 
       if (txtMoNo.getText().equals("") && txtMoNo.getText().contains("-")) {    

        String MoNo = txtMoNo.getText(); 
        String[] output = MoNo.split("-"); 
        //String[] textMoNo = MoNo.split("\\r?\\n"); 
        //String output = txtMoNo.getText(); 
        //String[] splittext = output.split("-"); 
        System.out.println("output split: " +output); 
        //String lines[] = string.split("\\r?\\n"); 

        txtMoNo.setText("");    
        txtItemNo.setText(""); 
        txtItemNo.setText(""); 
        txtCustomerPartNo.setText(""); 
        txtCustomerName.setText(""); 
        //txtPcsBag.setModel(new PcsBagData(new String[]{""})); 
        //txtPcsBag.setVisibleRowCount(1); 
        //txtBagSize.setText(""); 
        //txtPcsCarton.setText(""); 
        //txtCartonSize.setText(""); 
        tablePacks.setModel(new PackingSpecNoData("", "")); 
        txtPackingDate.setText(""); 
       } else { 
        SwingWorker<?, ?> job = new UIQuery(); 
        job.execute(); 
       } 
      } 
     }); 
     panel.add(txtMoNo, "cell 1 1,growx"); 
     txtMoNo.setColumns(10); 
+0

任何事件它应该分裂?或只是第一个文本字段保存7个字符移动到下一个? – XtremeBaumer

+0

@XtremeBaumer。只需一个textField 7个字符,并通过忽略“ - ”自动移动到下一个textField。 – JavaIssues

+1

'txtMoNo.getText()。equals(“”)&& txtMoNo.getText()。contains(“ - ”)'如果你的文本等于'“”'(换句话说,是空的),这永远不会是真的,那么它不能包含'-'。 – SWoeste

回答

0

我写了一个简单的测试类,只有2 JTextField的。一旦第一个文本字段有7个字符,第二个字符将抓住焦点并完全忽略-键。如果你想在文本框的任何其他位置使用它,你将需要另一种解决方案。代码如下:

public Test() { 
    super(); 
    this.setLayout(new BorderLayout()); 
    JTextField t1 = new JTextField(); 
    JTextField t2 = new JTextField(); 

    t1.getDocument().addDocumentListener(new DocumentListener() { 
     public void changedUpdate(DocumentEvent e) { 

     } 

     public void removeUpdate(DocumentEvent e) { 

     } 

     public void insertUpdate(DocumentEvent e) { 

      if (t1.getText().length() == 7) { 
       t2.grabFocus(); 
      } 
     } 
    }); 
    t2.addKeyListener(new KeyAdapter() { 
     public void keyTyped(KeyEvent e) { 
      char c = e.getKeyChar(); 
      if (c == '-') { 
       e.consume(); // ignore event 
      } 
     } 
    }); 

    this.add(t1, BorderLayout.PAGE_START); 
    this.add(t2, BorderLayout.PAGE_END); 
    this.pack(); 
    this.setVisible(true); 
}