这是我的情况:
我有一节课:
Calss:
Gui.java - 包含GUI
save(){//here we change the GUI which is called in the Gui.java, depends on the arraylist, after that we refresh the GUI
}
和一个类popup.java
okbtn(){//here we add sth in the arraylist and call the methode save in the class GUI}
如果我打开弹出框并单击按钮确定,则调用okbtn()。 但是如何更改特定GUI.java的UI。
Gui.java: - 像以下一样用户界面:私人面板=新面板 -save()//刷新UI,如(String str:arraylist){this.panel.addcontent(str))
Popupbox.java: Gui ui = new Gui();
添加某事。到一个arraylist并调用methode ui.save();
< - 如果我执行ui.save()它不会改变UI,我认为它改变了新类的UI。
我是否必须为所有GUI元素添加公共静态? 或者什么是最好的方式
答案 0 :(得分:1)
"我是否需要添加公共静态?所有的GUI元素?:
没有。把那些肮脏的想法从脑海中解脱出来。
相反,我会编写代码来提供interface
实现的业务GUI
。并且您可以将GUI
的实例传递给Popup
只需实现接口的方法,然后将接口的实例(即GUI)传递给Popup类。像
public interface SomeInterface {
public void save();
}
public class GUI implements SomeInterface {
Popup popup = new Popup(this);
@Override
public void save() {
// save
}
}
public class Popup ...{
private SomeInterface someInf;
public Popup(SomeInterface someInf) {
this.someInf = someInf;
}
...
public void actionPerformed(ActionEvent e) {
someInf.save();
}
}