2013-01-02 95 views
1

我在想如何在使用子窗口的父窗口中更改某些内容。所以,假设我有一个窗口,按下按钮后会打开一个弹出窗口。该新窗口包含一个JTextArea和另一个名为Ok的按钮。如何在Ok按钮被按下时根据JTextArea内部的内容更改父窗口的标题?从Java中的子窗口更改父窗口中的某些内容

回答

6

我看到它的方式,常见的有两种方法可以做到这一点:

  • 子窗口可能信息到父窗口时,按下OK。为此,子窗口需要对父窗口的引用,然后调用父窗口的公共方法。
  • 父窗口可能来自孩子的信息。这可以以两种方式之一发生。
    • 如果子窗口是模式对话框,然后家长可以简单地查询子窗口一次对话已处理和程序流程返回到母公司的代码。
    • 如果对话框是非模态对话框,然后父窗口将需要一个监听器添加到孩子,说PropertyChangeListener,并在适当的事件是由这个监听器触发,父窗口将查询对话窗口的信息。这将是一个使用Observer设计模式的示例。

我更喜欢拉技术,因为,因为它是父那就是有代码以显示子窗口的对象,并需要从子窗口中的信息,它应该有代码来提取需要的信息以及子窗口将不需要知道或引用父窗口对象。这对我来说似乎更清洁。

对于此示例,请查看我的代码here,herehere

编辑:请注意,对于您描述的示例,您可以通过使用JOptionPane轻松解决此问题。许多人不知道JOptionPanes可以显示非常复杂的GUI;基本上任何可以放在JPanel上的东西都可以显示在JOptionPane中(然后是一些)。您只需显示显示JTextField的JOptionPane,并在程序流返回到调用程序时,只需获取JOptionPane中显示的JTextField所保存的文本即可。没有比这更简单的了。