2011-07-26 66 views
2

我目前正在從JtextField獲得電話號碼,我遇到的問題是,輸入三位數字後,我想添加一個「 - 」後第三個整數在添加第六個整數後添加另一個「 - 」。我不確定如何做到這一點。到目前爲止,我只是檢查數字並確保它們是數字。我敢肯定,我要補充的東西在這裏,加入「 - 」後電話號碼

homeNum.addKeyListener(new KeyAdapter() { 
     @Override 
     public void keyTyped(KeyEvent e) { 
      String homeValue = homeNum.getText(); 
      if (e.getKeyChar() >= '0' && e.getKeyChar() <= '9' || e.getKeyChar() == '-' || e.getKeyChar() == '\b') { 


         homeNum.setEditable(true); 
         message.setText(""); 

     } 
      else { 
       homeNum.setEditable(false); 
       message.setText("* Enter only numeric digits(0-9)"); 

       } 

     } 

我在想在添加這樣的事情,但問題是,我不能刪除它,如果我想太多。

if(homeValue.length()==3) 
    { 
     homeNum.setText(homeValue+"-"); 
    } 

任何幫助/指針將不勝感激,謝謝。

回答

2

一種方法是這樣的..你監視次數的關鍵已被按下。當它達到3時,將setText設置爲任何你在那裏加上的-現在還有其他的事情需要考慮,比如當退格被按下時,你需要從計數器中減去一個,而不是增加。

對大約3-4個特殊按鍵做同樣的操作(例如按下Enter鍵時不添加任何東西)。

如果你有看的SwingWorker您可以在後臺做這些..

好運

+0

不知道Swing Worker做了什麼。 – Jazzy

+0

看看這個http://java.sun.com/products/jfc/tsc/articles/threads/threads2.html – DaMainBoss

0

有很多在線教程,以幫助這個:

public class TextVerifyInputRegularExpression { 

/* 
    * Phone numbers follow the rule 
    * [(][1-9][1-9][1-9][)][1-9][1-9][1-9][-][1-9][1-9][1-9][1-9] 
    */ 
    private static final String REGEX = "[(]\\d{3}[)]\\d{3}[-]\\d{4}"; //$NON-NLS-1$ 

    private static final String template = "(###)###-####"; //$NON-NLS-1$ 

    private static final String defaultText = "(000)000-0000"; //$NON-NLS-1$ 

    public static void main(String[] args) { 

一個教程,可以發現here你可以做到這一點

0

也許這是一個想法,用不同的文本框的工作,當你在一個鍵碼填補像用於軟件註冊。