所以我试图创建一个程序,当一个整数,即5,输入textarea时,点击三个按钮之一,它运行一个方法,从textarea获取整数并将其放入for循环。我现在不关心这些方法,我只是想让我的程序运行。
import java.awt.event.*;
import javax.swing.*;
public class Main {
static JTextField textfield = new JTextField("Enter the size of your shape: ");
static String size = textfield.getText();
static int w = Integer.parseInt(size);
static JTextArea textarea = new JTextArea(6, 37) ;
public static void main(String[] args) {
JFrame f = new JFrame();// creating instance of JFrame
JButton bSquare = new JButton("Square");// creating instance of JButton
JButton bRATriangle = new JButton("Right Angle Triangle");// creating instance of JButton
JButton bETriangle = new JButton("Equilateral Triangle");// creating instance of JButton
bSquare.setBounds(50, 100, 100, 40);// x axis, y axis, width, height
bRATriangle.setBounds(250, 100, 100, 40);// x axis, y axis, width, height
bETriangle.setBounds(450, 100, 100, 40);// x axis, y axis, width, height
textfield.setBounds(200, 200, 200, 80);
bSquare.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for(int i = 0; i > w; i++) {
textfield.setText("YEAH BOIIIIIII!");
}
}
});
当我尝试运行程序时,出现以下错误:
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.NumberFormatException: For input string: "Enter the size of your shape: "
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at Main.<clinit>(Main.java:8)
有关如何修复它的任何想法? 提前谢谢。
答案 0 :(得分:1)
这一切都是静态的
static JTextField textfield = new JTextField("Enter the size of your shape: ");
static String size = textfield.getText();
static int w = Integer.parseInt(size);
static JTextArea textarea = new JTextArea(6, 37) ;
所以在课程加载后执行它们并没有给你机会提供输入......
解决方案是:不要使用静态对象,此JTextField文本字段应为空,仅用于输入数字
答案 1 :(得分:0)
您解析String
以将其转换为字段声明中的Integer
:
static String size = textfield.getText();
int w = Integer.parseInt(size);
没有意义。
您应该将监听器添加到textfield
字段,并且在此监听器中使用try / catch执行此转换。
由于您不确定输入是Integer
,您应该处理异常情况。
例如:
textfield.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try{
w = Integer.parseInt(textfield.getText());
}
catch(NumberFormatException nfe){
... // handle the exception
}
}
}