我有一个 JFrame,当用户按下按钮时,会显示一个输入 jdialog。我需要 jdialog 处于非模态模式,一旦用户按下确定,我想根据输入执行一些操作。现在我将我的视图作为 jdialog 中的引用传递,因此当用户按下 ok 时,jdialog 会调用视图的方法。有没有更标准化的方法来处理这个问题,或者这是唯一的方法?我需要 jdialog 处于非模态模式
谢谢
当用户按下 ok 按钮时,您可以传递java.lang.Runnable
从 JDialog 调用的 a。通过这种方式,您可以将要运行的代码放入 Runnable 本身。
您当前使用回调的方法很简单,但观察者模式通常用于减少由此产生的紧密耦合。Swing 中有两种典型的实现:
安排您的视图实现Observer
接口,并将您的输入窗口委托给包含的Observable
. 该notifyObservers()
方法可用于将对象引用传递给Observer
. 一个非常简单的例子可以在这里找到。
让您的输入窗口EventListenerList
使用视图注册感兴趣的自定义事件来维护。侦听器感兴趣的数据可以在事件本身中传递。javax.swing.event
在这种类型上重用现有的或为自定义事件建模可能会很方便。每个都JComponent
包含一个EventListenerList
.