2011-07-26 46 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

也许这是一个想法,用不同的文本框的工作,当你在一个键码填补像用于软件注册。