【问题标题】:Changing something in a parent window from a child window in Java从 Java 中的子窗口更改父窗口中的某些内容
【发布时间】:2013-01-02 21:39:45
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    在我看来,有两种常见的方法:

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

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

    例如,请查看我的代码hereherehere

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-04
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多