所以我试图在用户没有在JTextField中输入0-60的数字时创建一个JOptionPanel弹出窗口,但我不确定如何
这是我试过的
else if(e.getSource() == Save) {
Task task = new Task();
task.hour = hin.getText();
task.min = min.getText();
if(min.getText() > 0 && min.getText() < 60) {
JOptionPane.showMessageDialog(null, "Please enter a valid time.");
}
else{
task.day = (String) dayspinner.getValue();
task.description = desc.getText();
tasks.add(task);
ObjectOutputStream os = null;
try{
os = new ObjectOutputStream(new FileOutputStream(save));
os.writeObject(tasks);
os.close();
}catch(IOException ex) {
ex.printStackTrace();
}
tframe.setVisible(false);
}
}
但是我得到的错误是“二元运算符的错误操作数类型”&lt;'“。
答案 0 :(得分:2)
对于用户输入验证,请使用JFormattedTextField
,JSpinner
,InputVerfifer
甚至是DocumentFilter
(但如果您到达此处,那么您可以使用#&#39} 39;可能做错了)
这些将允许您实时验证字段(焦点更改后)并确保仅允许用户输入所需的值。您还可以使用InputVerifier
来限制焦点更改,这样用户就无法离开该字段,直到他们输入有效值
有关详细信息,请参阅How to Use Formatted Text Fields,How to Use Spinners和Validating Input。
答案 1 :(得分:1)
getText()
方法返回String
,您无法使用<
或>
来比较String
。如果您首先将min#getText
的结果转换为int
,然后进行适当的比较会更好。您可以使用Integer#parseInt()
:
int minVal = Integer.parseInt(min.getText());
//fixed the condition
if (!(minVal > 0 && minVal < 60)) {
//rest of the code...
}
答案 2 :(得分:0)
int
无法使用比较运算符进行比较。解析Integer.parseInt(String someString)
- 值(CPropertySheet + CPropertyPage
)而不是比较它们。
答案 3 :(得分:0)
更改
if(min.getText() > 0 && min.getText() < 60) {
JOptionPane.showMessageDialog(null, "Please enter a valid time.");
}
要
if(Integer.parseInt(min.getText()) > 0 && Integer.parseInt(min.getText()) < 60) {
JOptionPane.showMessageDialog(null, "Please enter a valid time.");
}