【问题标题】:Having trouble giving my JPanel functionality无法提供我的 JPanel 功能
【发布时间】:2018-10-09 13:56:09
【问题描述】:

*这是我第一次使用 GUI,我似乎错过了我的眼睛无法捕捉到的东西。代码对我来说看起来不错,但是当我将其提交给 autoLab 时出现此错误,我无法弄清楚我哪里出错了。

{"correct":false,"feedback":"(class java.lang.NumberFormatException) 
 Error while attempting to call static method q2() on input [1]}

问题题是q5:

编写一个名为 q5 的公共静态方法,它不接受任何参数并返回一个 JPanel。 该面板将包含 1 个带有任意列数的 JTextField、1 个带有任意标签的 JButton、 和 1 个 JLabel。该面板将具有这样的功能,当用户输入数字时 文本字段(我们将此值称为 x)并按下标签将显示的按钮 标准形式的抛物线的 y 值 (https://www.desmos.com/calculator/zukjgk9iry) 其中 a=5.37、b=-6.07 和 c=2.0 在文本字段的 x 值处

提示:如果将 y 存储在包装类 Double 而不是原始 double 中,则可以 对其调用 toString 将其转换为可用作标签文本的字符串 提示:单击按钮后,您可能需要调整窗口大小才能看到结果 框架不会自动调整大小以适应新文本

不要在您的问题集问题中创建任何 JFrame。这样做会使 自动评分器,因为评分服务器没有显示 JFrame 的屏幕。 相反,只在问题集方法中返回所需的 JPanel 并使用 JFrame 进行测试 在您的主要方法或其他未分级的辅助方法中

这是我写的代码

public static JPanel q5() {


    JPanel panel = new JPanel();
    JTextField textField = new JTextField(5);
    panel.add(textField);               
    JLabel label = new JLabel("hello!");
    panel.add(label);
    JButton button = new JButton("Click Me!");
    panel.add(button);
    button.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e){
            int x = Integer.parseInt(textField.getText());
            double a=5.37*Math.pow(x, 2);
            double b=-6.07*x;
            double c=2.0; 

            String answer= ("y = " + a+ b +c);
            label.setText(answer);

        }
    });



    return panel;

}

你能解释一下我哪里出错了吗,谢谢。

【问题讨论】:

  • 什么是方法 q2()?它看起来像什么?

标签: java user-interface


【解决方案1】:

因此,当尝试解析字符串时,当字符串不包含数字时,可能会发生 NumberFormatException。您没有提供足够的信息来确定,但我假设是这条线导致了问题:

        int x = Integer.parseInt(textField.getText());

让我感到奇怪的一件事是,您用 5 列初始化了 JTextField:

    JTextField textField = new JTextField(5);

这就是你想要的吗?如果你想用值 5 预初始化文本字段,你必须这样做:

    JTextField textField = new JTextField("5");

【讨论】:

  • 哦,好的,这是我应该添加的内容吗?捕获(NumberFormatException 异常){ }
  • 嗯,这当然可以防止崩溃,但我认为更干净的解决方案是使用拒绝任何非数字输入的 JFormattedTextField 并使用检查空的 if 语句输入字符串。
猜你喜欢
  • 2018-10-09
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 2014-07-23
  • 2020-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多