我正在尝试访问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中。
答案 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
}
});
}
}