0

我正在 Netbeans 中构建一个 GUI - 它用于一个简单的小应用程序 - 一个转换器程序。基本上,用户键入他们想要转换为文本字段的任何内容,从多个单选按钮(比如 lbs 到 kg)中选择转换,然后单击“转换”。

问题是,我希望“转换”按钮和单选按钮的行为如下:

  1. 程序加载时,单选按钮和“转换”按钮被禁用。
  2. 如果用户在文本字段中输入一个数字(并且只有一个数字),单选按钮和“转换”按钮将被启用。
  3. 如果使用删除了他们输入的内容,则一切都将再次被禁用,直到他们输入另一个数字。

通过取消选中每个组件的属性中的“启用”框,我设法设置了单选按钮和“转换”按钮,因此它们被禁用。我还能够使用简单的 if 语句和 keyTyped 事件来启用/禁用,如下所示:

private void txtUsrInputKeyTyped(java.awt.event.KeyEvent evt) 
{                                     
    if (!txtUsrInput.getText().equals(""))
    {
        btnCalculate.setEnabled(true);
    }
    else
    {
        btnCalculate.setEnabled(false);            
    }
}

我想扩展我的代码,这样如果用户不小心在文本字段中输入了一个字母或符号(不要问我为什么要这样做,当他们知道他们必须只输入一个数字时),那么程序要么忽略他们输入的内容,或显示错误。当然,例外情况是键入句点 (.),因为他们可能想要指示十进制数。

关于我如何做到这一点的任何想法?希望我写的有意义!

4

2 回答 2

0

你的图形用户界面

如果你还不知道摇摆,那就学吧。了解所有组件的工作原理对于任何开发人员来说始终是一个巨大的优势,如果出现任何问题,您确切知道如何修复它(或者至少有更好的机会)。看看这些东西,以获得一些入门帮助。

检查小数

这看起来像是正则表达式的工作。您可以做的是指定一个数字[0-9]和一个句点\.。然后确保输入了一定次数的数字或小数。不过这里要注意的重要一点是,用户只能输入一位小数,最后是:

([0-9]+(\.[0-9]+))

这将允许9, 0.9,之类的值1.9302。它不允许.901. 如果您希望允许这样做,只需将第+一个换成*.:

([0-9]*(\.[0-9]+))

使用它

因为文本框包含一个字符串,所以您可以将它与您的正则表达式进行比较。简单地:

if(textBox1.getText().matches("([0-9]+(\.[0-9]+))")) {
    // Run some code in here.
}
于 2013-05-31T22:35:30.427 回答
0

好吧,如果 GUI 很简单,不要使用 GUI Builder,而是从头开始编写代码。沿着更难的路径,您将了解布局、动作侦听器等...

于 2013-05-31T22:36:31.237 回答