我正在学习java swing。有一个可编辑的JComboBox
用于选择不同的水深,JTextField
用于接受手机号码。我的问题是如何限制用户只输入这两个字段中的数字,以及如何限制字符输入的最大数量,例如移动电话号码不超过10?方法是否可用于这些要求,或者我需要自己定义它们?
在此先感谢您的帮助。
答案 0 :(得分:4)
使用JFormattedTextField
之类的内容:
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame("JFormattedTextField Example");
MaskFormatter fmt = null;
// A phone number 10 digits
try {
fmt = new MaskFormatter("(###)-###-####");//brackets () are optional just there for my pref
fmt.setPlaceholderCharacter('*');//set place holder for the empty digits of the number
} catch (java.text.ParseException e) {
}
JFormattedTextField tft1 = new JFormattedTextField(fmt);
frame.add(tft1);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.pack();
frame.setVisible(true);
}
});
}
这会自动拥有您想要的属性,它只接受指定格式的数字 有关详细信息,请查看文档:{{3}}
答案 1 :(得分:0)
如何限制用户在电话文字字段中输入数字以外的字符
TF1.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
char k=arg0.getKeyChar();
if (!(k>='0' && k<='9'))
arg0.consume();
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
}
});