2017-02-24 80 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); 
}