从main方法访问java jTextField

从main方法访问java jTextField,java,swing,netbeans,applet,awt,Java,Swing,Netbeans,Applet,Awt,我已经使用netbeans在swing中创建了GUI,其中java文件的结构如下所示 public class NewJFrame extends javax.swing.JFrame private void initComponents --> jTextField1 = new javax.swing.JTextField(); public static void main // one thread -->

我已经使用netbeans在swing中创建了GUI,其中java文件的结构如下所示

public class NewJFrame extends javax.swing.JFrame
    private void initComponents
-->         jTextField1 = new javax.swing.JTextField();

    public static void main
         // one thread 
-->              jTextField1.setText("abc");
因此,当在main函数内的线程中设置jTextField1的值时,出现错误“非静态变量jTextField1不能从静态上下文引用”

我只想访问特定jTextField1的值,我不想在main函数中创建新的TextField对象

我可以通过按钮的点击事件访问文本文件

在jList1中添加/删除项时也会出现相同的错误,因此有没有解决方案可以访问main()函数中的控件


我有java的基本知识,我正在将vb6中的一个项目转换为java

您可以将
jTextField1
更改为静态,也可以在
main

移动此行:

JTextField jTextField1 = new javax.swing.JTextField();

main
函数。

错误说明一切->非静态变量jTextField1不能从静态上下文中引用。
jTextfield1
是非静态的,为了从静态上下文(此处为
main
method)访问它,您需要类的对象引用


试试这个:

NewJFrame obj = new NewJFrame();
obj.jTextField1.setText("abc");

应该使用对象访问实例字段

是否考虑读取swing包?学习制作基本的窗口和文本字段并自己与它们交互,而不是使用netbeans,并不难


一个技巧可能是在类中分离GUI,在其中创建getter和setter。在另一个类中创建GUI类对象并实例化它。。。然后通过它,使用setter方法来操作文本字段等。有很多方法可以做到这一点,但我认为您需要仔细阅读我的观点。

您应该使用
main
body中的
NewJFrame
实例变量访问
jTextField1
,因为main是静态方法,只能访问类(静态)变量和方法。一个问题:为什么要从
main
中的JTextField调用
setText
,而不是在
init
方法中调用。只是好奇…这只是因为它是基于客户机-服务器的应用程序,所以线程在main方法中运行,我想访问线程中的textfield..那么为什么不创建一个方法(比如
public void doThreadStuff(){..}
)并将线程逻辑放在其中,然后在main中调用该方法呢(比如:
NewJFrame njf=newnewjframe()
;然后是
njf.doThreadStuff();
)。我只想访问对象已创建的特定jTextField1的值,我不想在主函数中创建新的TextField对象。@BhaveshGangani您没有在此处创建新的TextField。如果需要,请将该jTextField1设为static。我为主函数创建了一个单独的类,并在GUI类并使用
NewJFrame obj=new NewJFrame();
obj.TextSetter(“abc”);
访问它,该程序运行,但它会在调试器中导致“java.lang.NullPointerException”错误。@bhaveshgangi我们可以看到
TextSetter()
public void setter(String s){jTextField1.setText(s);})的主体吗