gpt4 book ai didi

java - 隐藏文本 = ca.a.getText();给出 NullPointerException?

转载 作者:行者123 更新时间:2023-12-02 07:41:19 26 4
gpt4 key购买 nike

编辑:感谢您的所有回答,确实提供了很多帮助,并且提供了一些很好的提示。

大家好, 我是新来的,也是 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();

当我使用“Click”按钮时,出现 NullPointerException。

所以问题是我应该如何编写代码来让 ClassB 读取 JTextField 并输出它?

最佳答案

您有 ClassA 变量 ca 但尚未初始化它。因此,首先您需要初始化 ca 变量才能使用它。

ClassA ca - new ClassA();
<小时/>

与你的问题无关,但正如你所说,你是java新手。永远记住逻辑类中永远不要有接口(interface)类的实例变量。这是一个糟糕的设计。

我建议您找到一些有关 MVC 设计模式的好文章,然后再跳回 OOP。建立坚实的基础总是更好:)

关于java - 隐藏文本 = ca.a.getText();给出 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11544859/

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