复合对象如何与父对象通信?

时间:2012-06-13 20:16:04

标签: java oop message composition

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

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

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

对象B上有按钮。 如果在B中单击了一个按钮,我想更新父对象的UI。

我如何与父母沟通 - 自我更新?

3 个答案:

答案 0 :(得分:3)

  

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

     
    

它们可以延迟到关闭为止。

  

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

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

将“一切都放在一个班级”并不是一个好的设计,也不是我一般的建议。这只是因为主GUI 而不是引用影响/更新它的控件的原因很少。

答案 1 :(得分: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

上找到有关它的更多信息

答案 2 :(得分:0)

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

我想它可以解决一般授权问题。

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

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