我目前正在处理从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+"-");
}
非常感谢任何帮助/指示,谢谢。
答案 0 :(得分:2)
您可以这样做的一种方法是:您可以监控按键的次数。当它达到3时,你将setText设置为你拥有的任何内容加上-
现在还有其他事情需要考虑,比如当按下退格键时,你需要从你的计数器中减去一个而不是添加。
对3-4个特殊键执行相同操作(如按下输入时不添加任何内容)。
如果您查看SwingWorker,可以在后台执行这些操作..
祝你好运答案 1 :(得分: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
答案 2 :(得分:0)
也许使用不同的文本框是个好主意,比如当你填写软件注册的密钥代码时。