2017-02-24 4 views
0

Mon MO actuel JTextFiled inclure "1234567-001" Je veux seulement "1234567" (7 chiffres) dans un textFiled. Un autre "001" passe au texte suivantFichier automatiquement.Diviser la chaîne Java par New JTextFiled

Veuillez vous reporter à la capture d'écran pour plus de détails.

Current Implementation

Excepted Result

Ci-dessous voici mon code que j'ai essayé:

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

un événement où il devrait se diviser? ou juste une fois que le premier champ de texte contient 7 caractères passent au suivant? – XtremeBaumer

+0

@XtremeBaumer .jusqu'à un textField 7 caractères et passer au textField suivant en ignorant "-". – JavaIssues

+1

'txtMoNo.getText(). Equals (" ") && txtMoNo.getText(). Contains (" - ")' Cela ne peut jamais être vrai, si votre texte est égal à "" "' (en d'autres termes, est vide) alors il ne peut pas contenir de '-'. – SWoeste

Répondre

0

j'ai écrit une classe de test simple avec seulement 2 JTextField « s. Une fois que le premier champ de texte a 7 caractères, le second saisira le focus et ignorera complètement la clé -. Si vous voulez l'avoir dans une autre position du champ de texte, vous aurez besoin d'une autre solution. code est la suivante:

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