Java 无法提供我的JPanel功能

Java 无法提供我的JPanel功能,java,user-interface,Java,User Interface,*这是我第一次使用GUI,我似乎错过了一些我的眼睛无法捕捉到的东西。代码在我看来很好,但是当我将其提交给autoLab时,我得到了这个错误,我无法找出哪里出错了 {"correct":false,"feedback":"(class java.lang.NumberFormatException) Error while attempting to call static method q2() on input [1]} 问题是q5: 编写一个名为q5的公共静态方法,该方法不接受任何参数

*这是我第一次使用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杰拉贝尔。面板将具有这样的功能:当用户在 文本字段(我们称之为x值)并按下按钮,标签将显示 标准形式的抛物线的y值() 其中,文本字段x值处的a=5.37、b=-6.07和c=2.0

提示:如果将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;

}

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

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

        int x = Integer.parseInt(textField.getText());
让我感到奇怪的是,您使用5列初始化JTextField:

    JTextField textField = new JTextField(5);
这就是你想要的吗?如果要使用值5预初始化文本字段,则必须按如下方式执行:

    JTextField textField = new JTextField("5");

什么是方法q2()?它看起来像什么?哦,好的,这是我应该添加的东西吗?catch(NumberFormatException exception){}好吧,这当然可以防止崩溃,但我认为更干净的解决方案是使用JFormattedTextField拒绝任何不是数字的输入,并使用if语句检查空输入字符串。