0

不知道如何在 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);
4

3 回答 3

0

最简单的方法是在例如 an 期间获取文本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");
        }
    }
});

另请参阅如何使用文本字段

另一种方法是使用默认情况下执行类似操作的微调器。

于 2013-10-17T22:58:55.007 回答
0

改用 a JSpinner

在此处输入图像描述

它的行为与描述的不完全一样,但会提供更好的用户体验。用户可以使用/按钮调整数值。如果他们键入了超出指定范围的值,则当字段失去焦点时,它将恢复为最后一个有效值。

于 2013-10-18T00:47:05.663 回答
0

免责声明:我不太了解 Swing,实际上,我完全不记得了..

也许您只需要在您的 JTextField 上附加一个验证器?

这里有一个例子,但是请注意,在那篇文章中,他们检查的是文本的长度,而不是内容。但是有了文本,您可以轻松地将其解析为数字并检查它是否大于/小于界限。

正如您在那篇文章中看到的那样,通过返回 true/false,您将防止用户输入错误的值 - 即。太小。现在,当检测到错误值时, 也许可以简单地myjtextfield.setText("50.0")在该输入上而不是返回“false”?这可能正是你想要的。

真的,小心那些“可能”:我不知道 Swing,但从一般的 UI 框架设计来看,尝试“setText”可能:

  • 抛出异常:许多框架认为在验证期间更改字段的值并防御它是非常邪恶的
  • 编辑时引起奇怪的问题:如果 JTextEdit 在每次更改文本时调用验证,您会在尝试时注意到奇怪的事情,即全选、删除、写入 123。您最终会得到 50.0123 或 12350.0 作为 JTextEdit可能会尝试在删除后验证中间空文本并将其强制为“50.0”..
  • 或者,它可能只是工作。

所以,如果你的时间很关键,那就试试吧。也许我猜得不错。但是,如果您有时间,请等到有人检查我没有写任何废话。

于 2013-10-17T19:11:50.003 回答