2017-02-24 2 views
0

Meine aktuelle MO Nr. JTextFiled gehören "1234567-001" Ich möchte nur "1234567" (7-stellig) in einem textFiled. Ein anderer "001" geht zum nächsten textFiled automatisch.Split Java String von New JTextFiled

Bitte beachten Sie den Screenshot für weitere Details.

Current Implementation

Excepted Result

Unten hier ist mein Code, die ich versucht:

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

jedes Ereignis, in dem es aufgeteilt werden sollte? oder nur wenn das erste Textfeld 7 Zeichen enthält, gehe zum nächsten? – XtremeBaumer

+0

@XtremeBaumer .just one textField 7 Zeichen und zum nächsten Text gehenField automatisch durch Ignorieren von "-". – JavaIssues

+1

'txtMoNo.getText(). Equals (" ") && txtMoNo.getText(). Contains (" - ")' das kann niemals wahr sein, wenn Ihr Text gleich '' '' ist (also leer ist) es kann kein '-' enthalten. – SWoeste

Antwort

0

i nur 2 JTextField ‚s mit einem einfachen Testklasse geschrieben. Sobald das erste Textfeld 7 Zeichen enthält, wird das zweite Textfeld den Fokus übernehmen und den Schlüssel - vollständig ignorieren. Wenn Sie es in einer anderen Position des Textfelds haben möchten, benötigen Sie eine andere Lösung. Code ist wie folgt:

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); 
}