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

标签 java swing user-interface window parent-child

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

最佳答案

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

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

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

有关此示例,请查看我的代码 here , herehere .

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

关于java - 在 Java 中从子窗口更改父窗口中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14129612/

相关文章:

java - 如何通过双击从子小部件创建 JOptionPane "OK"本身

java - 使用 JTree 进行 Swing Action

java - JNativeHook 将键写入文本区域

android - Android日历标准按钮中的加号和减号按钮吗?

java - 创建 Java 消息对话框(swing/awt/other)的最快方法?

java - 点击计数器 Java GUI

java - 在面板的边框上放置一个按钮

java - JTable 通过与字符串的精确匹配进行过滤

java - add()操作在 "? extends"和 "? super"的区别

java - 使用正则表达式匹配括号