在Java窗口中从子窗口更改父窗口中的内容

时间:2013-01-02 21:39:46

标签: java swing user-interface window parent-child

我想知道如何使用子窗口在父窗口中更改某些内容。所以,假设我有一个窗口,只需按一下按钮就可以打开一个弹出窗口。该新窗口包含一个JTextArea和另一个名为Ok的按钮。当按下确定按钮时,如何根据JTextArea中的内容更改父窗口的标题?

1 个答案:

答案 0 :(得分:6)

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

  • 当按下“确定”时,子窗口可以信息推送到父窗口。为此,子窗口需要对父窗口的引用,然后调用父窗口的公共方法。
  • 父窗口可以拉出来自孩子的信息。这可以通过两种方式之一发生。
    • 如果子窗口是模态对话框,那么一旦处理完对话框,父节点就可以简单地查询子窗口,程序流程返回到父代码。
    • 如果对话框是非模态对话框,则父窗口需要向子项添加一个监听器,比如PropertyChangeListener,并且当适当的事件被触发时在这个监听器中,父窗口将查询对话窗口中的信息。这将是使用 Observer 设计模式的一个示例。

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

有关此示例,请查看我的代码hereherehere

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