我试图制作这个GUI程序,该程序可以通过文本字段从用户那里获取输入,并且应该以大写形式返回它:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class gui {
JTextField textField;
JFrame frame;
JButton button;
public static void main(String args[]) {
gui tr = new gui();
tr.go();
}
public void go() {
JFrame frame = new JFrame();
JTextField textField = new JTextField("Type here);
JButton button = new JButton("Send");
button.addActionListener(new buttonListener());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(BorderLayout.CENTER, textField);
frame.getContentPane().add(BorderLayout.SOUTH, button);
frame.setSize(300, 300);
frame.setVisible(true);
}
class buttonListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
String txt;
txt = textField.getText();
txt = txt.toUpperCase();
textField.setText(txt);
}
}
}
文件通过空指针异常响应。 Ive尝试添加异常处理程序,并根据Ive在网上看到的实例更改程序。请向我解释我的错误。 谢谢。
答案 0 :(得分:1)
问题在于您的类成员JTextField textField
从未被初始化,但是您正在尝试在actionPerformed
中使用它
在您的go()
方法内部,创建一个新的JTextField textField
,它与原始textField
无关。
实际上,在go()
中,您基本上是在创建新对象
JFrame frame = new JFrame();
JTextField textField = new JTextField("Type here);
JButton button = new JButton("Send");
与其初始化已经为您的班级定义的内容。
答案 1 :(得分:0)
您正在go()
方法内创建另一个局部变量。更改此:
JTextField textField = new JTextField(“Type here”);
收件人:
textField = new JTextField(“Type here”);