【问题标题】:How do I make a retry pop up if the input isn't what is wanted?如果输入不是想要的,我该如何弹出重试?
【发布时间】:2015-05-05 03:27:39
【问题描述】:

因此,当用户没有在 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);
            }
        }

但我收到错误提示“二元运算符的操作数类型错误'

【问题讨论】:

标签: java swing if-statement joptionpane


【解决方案1】:

对于用户输入验证,请使用 JFormattedTextFieldJSpinnerInputVerfifer 甚至 DocumentFilter(但如果您到达这里,您可能做错了)

这些将允许您实时验证字段(焦点更改后)并确保只允许用户输入您想要的值。您还可以使用InputVerifier 来限制焦点的更改,因此用户在输入有效值之前无法离开该字段

有关详细信息,请参阅 How to Use Formatted Text FieldsHow to Use SpinnersValidating Input

【讨论】:

    【解决方案2】:

    getText() 方法返回一个String,您不能使用&lt;&gt; 来比较Strings。最好先将min#getText 的结果转换为int,然后进行适当的比较。您可以使用Integer#parseInt()

    int minVal = Integer.parseInt(min.getText());
    //fixed the condition
    if (!(minVal > 0 && minVal < 60)) {
        //rest of the code...
    }
    

    【讨论】:

    • 我试过你说的,但现在它给了我一个错误,说“int cannot be dereferenced”
    • @DavidL 这很奇怪。可能您应该为局部变量使用另一个名称。
    【解决方案3】:

    String 无法使用比较运算符进行比较。改为解析 int-value (Integer.parseInt(String someString)) 并比较它们。

    【讨论】:

      【解决方案4】:

      改变

          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.");
          }
      

      【讨论】:

        猜你喜欢
        • 2015-04-24
        • 2020-04-24
        • 2020-04-13
        • 1970-01-01
        • 2018-01-21
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        相关资源
        最近更新 更多