gpt4 book ai didi

java - 无法从静态上下文引用非静态变量 jTextField1

转载 作者:行者123 更新时间:2023-12-01 11:27:38 25 4
gpt4 key购买 nike

package test2;

public class NewJFrame extends javax.swing.JFrame {

private static void valueGen() {
String x = jTextField1.getText();
System.out.println(x);
}

public NewJFrame() {
initComponents();
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
jTextField1.setText("Hello");
}

public static void main(String args[]) {
valueGen();

java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}

private javax.swing.JButton jButton1;
private javax.swing.JTextField jTextField1;
}

我有一个如上所示的程序。

我需要从函数 valueGen() 访问 jTextField1 的值。
但我收到错误:

non-static variable cannot be referenced from static context

我应该怎么做才能从 valueGen() 访问 jTextField1 的值?

最佳答案

嗯,这取决于你需要什么。

如果您的整个程序中只有一个 jTextField1(不过我怀疑情况确实如此),只需将其设为静态即可:

private static javax.swing.JTextField jTextField1;

但是,如果您更有可能拥有多个 NewJFrame 对象,那么请在代码中添加一个 getter 方法:

public javax.swing.JTextField getTextField() {
return this.jTextField1;
}

然后将其作为参数添加到valueGen:

private static void valueGen(javax.swing.JTextField jTextField1) {
String x = jTextField1.getText();
System.out.println(x);
}

现在,当您调用 valueGen 时,只需使用 getter 方法:

NewJFrame myFrame = NewJFrame();
//some code
valueGen(myFrame.getTextField());

这样您仍然可以拥有一个可以处理任何对象实例的文本字段的静态方法。

关于java - 无法从静态上下文引用非静态变量 jTextField1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30690346/

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