Java 在非模态模式下等待jdialog

Java 在非模态模式下等待jdialog,java,swing,jdialog,non-modal,Java,Swing,Jdialog,Non Modal,我有一个JFrame,当用户按下按钮时,会显示一个input jdialog。我需要jdialog处于非模态模式,一旦用户按下ok, 我想根据输入执行一些操作。现在我在jdialog中将视图作为引用传递,这样当用户按下ok时,jdialog调用一个方法 这是我的看法。有没有更标准化的方法来处理这个问题,或者这是唯一的方法? 我需要jdialog处于非模态模式 谢谢当用户按下ok按钮时,您可以传递一个java.lang.Runnable,从JDialog调用它。通过这种方式,您可以将要运行的代码放

我有一个JFrame,当用户按下按钮时,会显示一个input jdialog。我需要jdialog处于非模态模式,一旦用户按下ok, 我想根据输入执行一些操作。现在我在jdialog中将视图作为引用传递,这样当用户按下ok时,jdialog调用一个方法 这是我的看法。有没有更标准化的方法来处理这个问题,或者这是唯一的方法? 我需要jdialog处于非模态模式


谢谢

当用户按下ok按钮时,您可以传递一个
java.lang.Runnable
,从JDialog调用它。通过这种方式,您可以将要运行的代码放入可运行本身。

当前使用回调的方法很简单,但通常使用回调来减少由此产生的紧密耦合。Swing中有两种典型的实现:

  • 安排视图实现该接口,并将输入窗口委托给包含的实例。该方法可用于将对象引用传递给。可以找到一个非常简单的例子

  • 让您的输入窗口使用视图注册感兴趣的自定义事件维护一个。侦听器感兴趣的数据可以在事件本身中传递。可以方便地重用现有事件或对此类类型的自定义事件建模。每个包含一个


  • 这样,如果打开4个JDialogs,JFrame即观察者将注册x(例如4)个JDialogs。用户在每个对话框中按ok,并且始终在observer中调用相同的方法。为了让它工作,我应该放一些额外的信息,说明下一步应该进行什么类型的处理?这就是处理这个问题的方法吗?因为现在,用户有dialogA,当它关闭时,会在JFrame中调用methodA,因为我知道我在代码中的位置。@user384706:任何一种方法都允许将信息传递给观察者。我已经在上面详细阐述了。我只是想知道,是否正确的方法是传递一些类型的信息,例如“doA”信息,并且在观察者的更新(Observable o,Object arg)方法中,我有一个if(arg.msg==“doA”)callA()else callB()我之所以这么问,是因为我对gui编程还不熟悉,我正在努力理解做这些事情的正确方法。多谢各位@user384706:我已经添加了上面示例的链接。这是一个非常好的主意,但我仍然必须在要更新的gui组件中传递引用(当然是使用EventQueue的cource)。现在,因为我返回到视图,所以组件可用。有什么想法吗?回调可用的组件有什么问题吗?没有问题,我是swing新手,我不确定这是一种使用的方法还是存在其他类型的分离模式。谢谢你的回复!