0

我来自 C 系统编程背景,Java 编程对我来说是希腊语和拉丁语。

所以我的问题是:-我有 2 个JFrame对象

  • 我有一个父对象 A
  • 它有子对象 B。

对象 B 上有按钮。如果在 BI 中单击按钮,则希望更新父对象的 UI。

我怎样才能与父母沟通 - 更新自己?

4

3 回答 3

3

当值正在调整并且第二个 GUI 打开时,是否需要“实时”更新,或者它们可以延迟到它关闭吗?

他们可以延迟到关闭。

使用模态对话框或JOptionPane代替。

使用模式对话框,在设置为可见后立即出现的任何代码行都将被阻止处理,直到它被关闭。这是您检查(选项窗格的返回值和)您在对话框中放置的控件的值的地方。请注意,这里的想法是不扩展对话框。相反,只需在主代码中创建一个实例,创建控件,将它们添加到其中,并使用主框架作为父框架来显示它。

将“所有东西都放在一个类中”不是一个好的设计,也不是我的一般建议。只是这里没有什么理由让主 GUI没有对影响/更新它的控件的引用。

于 2012-06-13T20:24:01.257 回答
0

通常情况下,您有一个父 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

于 2012-06-13T20:28:16.177 回答
0

我找到了另一种解决这个问题的方法。

我想它可以解决一般的委托问题。

父对象由子对象组成。父对象将此值传递给构造函数中的子对象。这样子可以调用父对象上的方法并通知任何更改。

在这种情况下,子框架调用父框架并要求父框架刷新自己。

于 2012-06-14T06:25:32.717 回答