JTextField 整数验证
JTextField Validation with integers
我正在尝试验证 JTextField
中的整数值。我想确保用户只输入设定范围内的整数值。我尝试使用 JFormattedTextField
但到目前为止运气不好。
一个好的选择是使用 InputVerifier
- 除非满足输入条件,否则您的文本字段不会产生焦点。 JFormattedTextField
不会在这里做,因为你的限制不仅仅是格式,还有数学。
public class NumRange extends JFrame {
public static void main(String[] args) {
new NumRange();
}
NumRange() {
final int MIN = 0;
final int MAX = 100;
JTextField textField = new JTextField();
textField.setInputVerifier(new InputVerifier() {
@Override
public boolean verify(JComponent input) {
String text = ((JTextField) input).getText();
int num;
try {
num = Integer.parseInt(text);
} catch (NumberFormatException e) {
return false;
}
if (num <= MAX && num >= MIN)
return true;
return false;
}
});
getContentPane().add(textField);
getContentPane().add(new JTextField(), BorderLayout.PAGE_END);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setVisible(true);
}
}
在顶部输入各种输入后尝试将焦点切换到底部文本字段。
我正在尝试验证 JTextField
中的整数值。我想确保用户只输入设定范围内的整数值。我尝试使用 JFormattedTextField
但到目前为止运气不好。
一个好的选择是使用 InputVerifier
- 除非满足输入条件,否则您的文本字段不会产生焦点。 JFormattedTextField
不会在这里做,因为你的限制不仅仅是格式,还有数学。
public class NumRange extends JFrame {
public static void main(String[] args) {
new NumRange();
}
NumRange() {
final int MIN = 0;
final int MAX = 100;
JTextField textField = new JTextField();
textField.setInputVerifier(new InputVerifier() {
@Override
public boolean verify(JComponent input) {
String text = ((JTextField) input).getText();
int num;
try {
num = Integer.parseInt(text);
} catch (NumberFormatException e) {
return false;
}
if (num <= MAX && num >= MIN)
return true;
return false;
}
});
getContentPane().add(textField);
getContentPane().add(new JTextField(), BorderLayout.PAGE_END);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setVisible(true);
}
}
在顶部输入各种输入后尝试将焦点切换到底部文本字段。