不确定如何在JAVA中写这个... 如果用户键入超出给定范围10-100英尺的值,我需要编码将插入默认值(比如50)。如果输入空白或非整数或者值超出范围但是无法弄清楚如何集成默认值,我会使用它来处理错误。 我的工作是什么
JPanel panel1 = new JPanel();
panel1.setLayout(new FlowLayout());
poolLength = new JTextField(10);
panel1.add(new JLabel("Enter the pool's length (ft):"));
panel1.add(poolLength);
我想要添加的内容是这样的
If poolLength <10 or >200 then poolLength = 100
Else this.add(panel1);
答案 0 :(得分:0)
免责声明:我不知道摇摆不错,实际上,我根本不记得太多了..
也许您只需要将验证器附加到您的JTextField?
Here you have an example但请注意,在该帖子中,他们检查文本的长度,而不是内容。但是有了文本,你可以很容易地将它解析为一个数字并检查它是否大于/低于边界。
正如您在该帖子中看到的那样,通过返回true / false,您将阻止用户输入错误的值 - 即。太小。现在,当检测到错误的值时,那么,而不是返回'false',可能,就可以在该输入上简单地myjtextfield.setText("50.0")
?这可能完全符合您的要求。
真的,小心那些“也许”:我不知道Swing,但是从一般的UI框架设计来看,尝试“setText”可能会:
所以,如果你的时间很关键,那就试试吧。也许我猜对了。但是,如果你有空闲时间,请等到有人检查我没有写任何废话。
答案 1 :(得分:0)
最简单的方法是在例如一个ActionEvent
,解析它并重置文本,如果它在范围之外。
jTextField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
boolean isValid = true;
try {
int intVal = Integer.parseInt(jTextField.getText());
if (intVal < 10 || intVal > 200) {
isValid = false;
}
} catch (NumberFormatException x) {
// user entered something which is not an int
isValid = false;
}
if (!isValid) {
jTextField.setText("100");
}
}
});
另一种方式是use a spinner默认情况下会这样做。
答案 2 :(得分:0)