访问main()中的jTextArea

时间:2012-10-01 04:43:01

标签: java swing

我正在尝试访问main()中的jTextArea,但收到错误,指出"Non-static members cannot be accessed in static context"。因此我通过以下方式访问:(使用netbeans)

public static void main(String args[]) throws Exception {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
           new UserInterface().setVisible(true);
        }
    });

    sample ss=new sample();
    System.out.println("Inside Main()");
    ss.display("Happy");
}

class sample 
{
    void display(String message)
    {

        UserInterface ui=new UserInterface();
        System.out.println("inside sample:"+message);
        ui.jTextArea2.append(message);
        String aa=ui.jTextArea2.getText();
        System.out.println("Content of JTextArea2:"+aa);
    }
}

我已将变量声明为:public javax.swing.JTextArea jTextArea2;

我得到了以下输出:

内部主要()

内部样本:快乐

JTextArea2的内容:快乐

但问题是:消息未显示在GUI中的jTextArea2中。

1 个答案:

答案 0 :(得分:2)

您已为UserInterface ...

创建了两个不同的引用
java.awt.EventQueue.invokeLater(new Runnable() {
    public void run() {
       // Here's one...
       new UserInterface().setVisible(true);
    }
});

//...

void display(String message)
{
    // And here's another
    UserInterface ui=new UserInterface();

现在这两个引用彼此无关,对一个引用的任何修改都不会影响另一个。

如果你没有这样的话:

public static void main(String args[]) throws Exception {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            UserInterface ui = new UserInterface();
            ui.jTextArea2.append(message);
            ui.setVisible(true)
        }
    });
}

你会发现它有效。

<强>更新

public static void main(String[] agrs)加载课程一直在进行,有点难以完成任何其他事情;)

public class UserInterface extends javax.swing.JFrame { 
    public static void main(String args[]) throws Exception {
        java.awt.EventQueue.invokeLater(new Runnable() { 
            public void run() {
                UserInterface ui = new UserInterface();
                // Happy interactions :D
            } 
        }); 
    }
}