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

Cas*_*urr 1 java user-interface swing window parent-child

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

Hov*_*els 6

我看到它的方式,有两种常见的方法:

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

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

对于这样的一个例子,请看看我的代码在这里,这里这里.

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