文本字段的按钮动作侦听器不起作用
button action listener for text field doesnt work
我试图制作这个 GUI 程序,它通过文本字段从用户那里获取输入,并且应该 return 它具有大写转换:
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);
}
}
}
文件响应空指针异常。我尝试添加异常处理程序,并根据我在网上看到的实例更改程序。请向我解释我的错误。
谢谢。
问题是您的 class 成员 JTextField textField
从未初始化,但您正试图在 actionPerformed
中使用它
在您的 go()
方法中,您创建了一个与原始 textField
.
无关的新 JTextField textField
事实上,在 go()
中,您基本上是在创建新对象
JFrame frame = new JFrame();
JTextField textField = new JTextField("Type here);
JButton button = new JButton("Send");
而不是初始化那些已经为您的class定义的。
您正在 go()
方法中创建另一个局部变量。改变这个:
JTextField textField = new JTextField(“Type here”);
收件人:
textField = new JTextField(“Type here”);
我试图制作这个 GUI 程序,它通过文本字段从用户那里获取输入,并且应该 return 它具有大写转换:
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);
}
}
}
文件响应空指针异常。我尝试添加异常处理程序,并根据我在网上看到的实例更改程序。请向我解释我的错误。 谢谢。
问题是您的 class 成员 JTextField textField
从未初始化,但您正试图在 actionPerformed
在您的 go()
方法中,您创建了一个与原始 textField
.
JTextField textField
事实上,在 go()
中,您基本上是在创建新对象
JFrame frame = new JFrame();
JTextField textField = new JTextField("Type here);
JButton button = new JButton("Send");
而不是初始化那些已经为您的class定义的。
您正在 go()
方法中创建另一个局部变量。改变这个:
JTextField textField = new JTextField(“Type here”);
收件人:
textField = new JTextField(“Type here”);