我来自 C 系统编程背景,Java 编程对我来说是希腊语和拉丁语。
所以我的问题是:-我有 2 个JFrame
对象
- 我有一个父对象 A
- 它有子对象 B。
对象 B 上有按钮。如果在 BI 中单击按钮,则希望更新父对象的 UI。
我怎样才能与父母沟通 - 更新自己?
我来自 C 系统编程背景,Java 编程对我来说是希腊语和拉丁语。
所以我的问题是:-我有 2 个JFrame
对象
对象 B 上有按钮。如果在 BI 中单击按钮,则希望更新父对象的 UI。
我怎样才能与父母沟通 - 更新自己?
当值正在调整并且第二个 GUI 打开时,是否需要“实时”更新,或者它们可以延迟到它关闭吗?
他们可以延迟到关闭。
使用模态对话框或JOptionPane
代替。
使用模式对话框,在设置为可见后立即出现的任何代码行都将被阻止处理,直到它被关闭。这是您检查(选项窗格的返回值和)您在对话框中放置的控件的值的地方。请注意,这里的想法是不扩展对话框。相反,只需在主代码中创建一个实例,创建控件,将它们添加到其中,并使用主框架作为父框架来显示它。
将“所有东西都放在一个类中”不是一个好的设计,也不是我的一般建议。只是这里没有什么理由让主 GUI没有对影响/更新它的控件的引用。
通常情况下,您有一个父 JFrame 对象,您可以在其中放置按钮、面板等小部件。您可以简单地使用按钮添加一个匿名操作侦听器,然后从其中调用父类的任何函数。
public class MyFrame extends JFrame{
private Button button 2 = new Button();
public void init(){
b = new Button("Click me");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
//CALL ANY FUNCTION OF PARENT CLASS FROM HERE.
updateText();
}
});
}
updateText(){
this.button2.setText("new text");
}
}
您可以在此页面上找到有关它的更多信息http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html
我找到了另一种解决这个问题的方法。
我想它可以解决一般的委托问题。
父对象由子对象组成。父对象将此值传递给构造函数中的子对象。这样子可以调用父对象上的方法并通知任何更改。
在这种情况下,子框架调用父框架并要求父框架刷新自己。