2017-02-24 1 views
0

내 현재 MO 번호 JTextFiled는 "1234567-001"을 포함합니다. 하나의 textFiled에만 "1234567"(7 자리) 만 입력하고 싶습니다. 또 다른 "001"은 자동으로 다음 textFiled로갑니다.새 JTextFiled로 자바 문자열 나누기

자세한 내용은 스크린 샷을 참조하십시오. 난 단지 2 JTextField 년대와 간단한 테스트 클래스를 작성했습니다

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 문자 만 변경하고 "-"를 무시하여 다음 textField로 자동 이동하십시오. – JavaIssues

+1

'txtMoNo.getText(). equals ("") && txtMoNo.getText(). contains ("-")'텍스트가''''(비어있는 경우)이면 true가 될 수 없다. '-'를 포함 할 수 없습니다. – SWoeste

답변

0

: 여기 아래

Excepted Result

Current Implementation

내가 시도 내 코드입니다. 첫 번째 텍스트 필드가 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); 
}