【发布时间】:2013-01-02 21:39:45
【问题描述】:
我想知道如何使用子窗口更改父窗口中的某些内容。所以,假设我有一个窗口,按下按钮会打开一个弹出窗口。该新窗口包含一个 JTextArea 和另一个名为 Ok 的按钮。按下 Ok 按钮时,如何根据 JTextArea 中的内容更改父窗口的标题?
【问题讨论】:
标签: java swing user-interface window parent-child
我想知道如何使用子窗口更改父窗口中的某些内容。所以,假设我有一个窗口,按下按钮会打开一个弹出窗口。该新窗口包含一个 JTextArea 和另一个名为 Ok 的按钮。按下 Ok 按钮时,如何根据 JTextArea 中的内容更改父窗口的标题?
【问题讨论】:
标签: java swing user-interface window parent-child
在我看来,有两种常见的方法:
PropertyChangeListener,并且当适当的事件被这个监听器触发时,父窗口会查询对话窗口的信息。这将是使用 Observer 设计模式的示例。我更喜欢 pull 技术,因为它是具有代码来显示子窗口并且需要来自子窗口的信息的对象的父对象,它应该具有提取所需信息的代码,并且子窗口不需要知道或引用父窗口对象。这对我来说似乎更干净。
编辑:请注意,对于您描述的示例,您可以使用 JOptionPane 轻松解决此问题。许多人不知道 JOptionPanes 可以显示非常复杂的 GUI。基本上任何可以放在 JPanel 上的东西都可以显示在 JOptionPane 中(然后是一些)。您只需显示显示您的 JTextField 的 JOptionPane,当程序流返回到调用程序时,只需获取 JTextField 保存的显示在 JOptionPane 中的文本。没有比这更简单的了。
【讨论】: