我有这个问题:
我有一个JFrame GUI类GUIView.java:
public class GUIView extends JFrame{
//other instance variables
....
public JTextArea gameGuide;
//constructor
public GUIView(){
...
initGUI();
}
//init GUI
public void initGUI(){
//add other components
...
gameGuide = new JTextArea();
//set layout
...
add(gameGuide);
}
public void setText(String s){
this.gameGuide.setText(s);
}
public void showGame(){
GUIView f = new GUIView() ;
f.setSize(450,600);
f.setTitle("TIC TAC TOE ONLINE");
f.setResizable(false);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
- 然后我有一个名为Worker.java的文件
public class Worker {
public GUIView guiView;
public Worker(GUIView guiView) {
this.guiView= guiView;
}
public static void main(String[] args){
GUIView guiView = new GUIView();
Worker worker = new Worker(guiView);
guiView.setText("testing if this will work");
guiView.showGame();
} }
GUI工作,它显示一个空白的游戏指南文本区域。
在Worker.java中,我尝试更改gameGuide的内容,但gameGUI.setText()中的字符串没有显示出来。
我试过设置可见真 - > false - >是的,仍然没有奏效。
请解释原因?有没有办法可以在Worker.java中更改组件gameGuide textArea的内容?
答案 0 :(得分:2)
这可能会有所帮助。实际上,创建了两个不同的GUIView JFrame。
fucs[commandID](arg1, arg2);
答案 1 :(得分:1)
您每次都在GUIView
方法中创建一个新的showGame()
。无论你之前在另一个上面设置了什么,你总会看到那个。
public static void main(String[] args){
GUIView guiView = new GUIView(); // creates a GUIView
Worker worker = new Worker(guiView);
guiView.setText("testing if this will work"); // changes the created GUIView
guiView.showGame(); // creates an entirely new GUIView and shows that one instead
}