编辑:谢谢你的所有答案,真的有很多帮助和一些很好的提示。
大家好,我是新来的Java 编程新手,所以我会尽力提供任何相关信息。
我的问题是我正在尝试创建两个类,第一个类(ClassA)是一个 GUI,第二个(ClassB)是(ClassA)的逻辑。
我的代码的一个简单示例是:-
A类
import javax.swing.*;
import java.awt.*;
public class ClassA extends JFrame {
JTextField a = new JTextField();
JButton but = new JButton("Click");
ClassB cb = new ClassB();
public ClassA() {
setTitle("Test");
setLookAndFeel();
setSize(250, 100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout mainGrid = new GridLayout(1, 1, 20, 20);
setLayout(mainGrid);
add(a);
add(but);
but.addActionListener(cb);
setVisible(true);
}
private void setLookAndFeel() {
try {
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"
);
} catch (Exception exc) {
//ignore error
}
}
public static void main(String[] args) {
ClassA Alch = new ClassA();
}
}
B类
import java.awt.event.*;
public class ClassB implements ActionListener{
String command;
String text;
ClassA ca;
@Override
public void actionPerformed(ActionEvent event) {
command = event.getActionCommand();
if (command.equals("Click")) {
text = ca.a.getText();
System.out.println(text);
}
}
}
我遇到的问题是让 ClassB 读取 JTextField a。
如果我删除线
text = ca.a.getText();
并使用
System.out.println(command);
它输出 Click 所以其余的代码似乎可以工作,但只要我添加
text = ca.a.getText();
当我使用“单击”按钮时,我得到一个 NullPointerException。
所以问题是我应该如何编写代码让 ClassB 读取 JTextField 并输出它?