【问题标题】:Building a GUI in Netbeans, which should I use?在 Netbeans 中构建 GUI,我应该使用哪个?
【发布时间】:2013-06-01 06:36:31
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: user-interface netbeans


    【解决方案1】:

    你的图形用户界面

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

    检查小数

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

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

    这将允许90.91.9302 等值。它不会允许.901 之类的值。如果您愿意,只需将第一个 + 替换为 *。:

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

    使用它

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

    if(textBox1.getText().matches("([0-9]+(\.[0-9]+))")) {
        // Run some code in here.
    }
    

    【讨论】:

    • Chris - 感谢您提供有关 Regex 的信息,并感谢您提供有关 GUI 创建的信息!
    • 好的,现在我有一个新问题!当我在 Ubuntu 12.04 中运行 jar 文件时,上面的正则表达式可以完美运行。但是,如果我启动到 Windows XP 并从那里运行 Jar,则正则表达式不起作用!即使我输入了正确的数据,我输入的任何内容都会产生错误。
    • 这是因为这个正则表达式是为在更高版本的 Java 上运行而构建的。 Windows XP 机器上运行的是什么版本的 java?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多