这是我的情况:
我有一堂课:
卡尔斯 :
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
}
和类弹出窗口.java
okbtn(){//here we add sth in the arraylist and call the methode save in the class GUI}
如果我打开弹出框并单击按钮确定,则调用okbtn()。但是如何更改特定 GUI 的 UI.java。
桂.java :- 像:p rivate面板=新面板一样持有UI-save()//刷新 UI like for (String str : arraylist){ this.panel.addcontent(str))
弹出框.java :贵 ui = 新贵();
将 sth. 添加到数组列表并调用方法 ui.save();
<--如果我做ui.save(),它不会改变UI,我看到它会改变新类的UI。>
我是否必须向所有 GUI 元素添加公共静态?或者什么是最好的方法
"我必须添加公共静态吗?到所有 GUI 元素?
不。把这个肮脏的想法从你的脑海中抹去。
相反,我会编写代码来提供GUI
实现的业务interface
。您可以将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();
}
}