gpt4 book ai didi

java - 将 .getText() 字符串传递给另一个类

转载 作者:搜寻专家 更新时间:2023-11-01 01:36:56 26 4
gpt4 key购买 nike

我目前正在做一个大学一年级的项目,但我遇到了一个问题,虽然我怀疑它是一个非常复杂的问题,但我一直在搜索,但我就是找不到合适的答案。

问题涉及两个类。一个 gui 类 (class1) 和另一个类 (class2),当我运行代码时,第二个类在尝试从 class1 检索 class2 中的 getText() String 时给我一个空指针异常。

我在 class1 中有一个 JTextField,我正在尝试将 .getText() 值传递给 class2 并将其存储在 String 类型变量中。

我尝试使用的当前代码如下(已简化):

 public class Class1 {

private JTextField textField = new JTextField("Something");

public Class1() {}
...
public String getTextFieldString() {
return textField.getText();
}
}

public class Class2 {

public Class2(Class1 class1) {
c1=class1
}
private c1 Class1 = new Class1();
private String s = new String();
...
s = c1.getTextFieldString();
}

我对编码还很陌生,我读到也许我需要在某个地方传递一个参数,我认为这是因为 textField 本身不是静态的,它会在有人输入新值时发生变化。 (很抱歉在那里陈述显而易见的问题。)

无论如何,我们将不胜感激。非常感谢!

最佳答案

我可能会帮助审核 prescribed initialization order在 java 。特别是,textField 实例变量初始值设定项应该在有效的 Class1 实例存在时完成。违反此顺序的一种方法是在不同的线程上构造 Class1Class2。为了避免这种情况,Swing GUI 对象应该event dispatch thread 上构建和操作。 , 如 sscce 所示下面。

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

/** @see http://stackoverflow.com/q/10067399/230513 */
public class NewJavaGUI extends JPanel {

public NewJavaGUI() {
Class1 class1 = new Class1();
Class2 class2 = new Class2(class1);
this.add(class1.textField);
this.add(new JLabel(class2.s));
}

private static class Class1 extends Object {

private final JTextField textField = new JTextField("Something");

public Class1() {} // implicit

public String getTextFieldString() {
return textField.getText();
}
}

private static class Class2 extends Object {

private final Class1 c1;
private final String s;

public Class2(Class1 class1) {
c1 = class1;
s = c1.getTextFieldString();
}
}

private void display() {
JFrame f = new JFrame("NewJavaGUI");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(this);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
new NewJavaGUI().display();
}
});
}
}

关于java - 将 .getText() 字符串传递给另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10067399/

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