无法提供我的JPanel功能

时间:2018-04-29 06:52:50

标签: 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的公共静态方法,该方法不带参数并返回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;

}

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

1 个答案:

答案 0 :(得分:0)

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

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

令我感到奇怪的一件事是你用5列初始化JTextField:

    JTextField textField = new JTextField(5);

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

    JTextField textField = new JTextField("5");