gpt4 book ai didi

java - 文本字段的按钮操作监听器不起作用

转载 作者:行者123 更新时间:2023-12-02 10:56:53 26 4
gpt4 key购买 nike

我尝试制作这个 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);
}
}
}

文件通过空指针异常响应。我尝试添加异常处理程序,并根据我在网上看到的实例更改程序。请向我解释我的错误。谢谢。

最佳答案

问题是您的类成员 JTextField textField 从未初始化,但您试图在 actionPerformed 中使用它

在您的 go() 方法中,您创建一个新的 JTextField textField,它与原始 textField 无关。

事实上,在 go() 中,您基本上创建了新对象

JFrame frame = new JFrame();
JTextField textField = new JTextField("Type here);
JButton button = new JButton("Send");

而不是初始化那些已经为您的类定义的内容。

关于java - 文本字段的按钮操作监听器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51660353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com