Java 无法提供我的JPanel功能
*这是我第一次使用GUI,我似乎错过了一些我的眼睛无法捕捉到的东西。代码在我看来很好,但是当我将其提交给autoLab时,我得到了这个错误,我无法找出哪里出错了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的公共静态方法,该方法不接受任何参数
{"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语句检查空输入字符串。