Java 如何使一个方法等待另一个类的输入?

Java 如何使一个方法等待另一个类的输入?,java,multithreading,wait,Java,Multithreading,Wait,我有一个类,它打开一个带有列表的窗口,用户可以从中选择一项。所有这些都有效,如果选择了一个列表项,则会存储该值,窗口中会有一个按钮保存该值并关闭窗口 这就是窗户的样子 现在我的问题是:我需要一个方法,返回用户单击“OK”时选择的值。我的尝试如下所示: public Field returnSelectedField() { FieldSelector fs = new FieldSelector(); //FieldSelector is the class I mentioned b

我有一个类,它打开一个带有列表的窗口,用户可以从中选择一项。所有这些都有效,如果选择了一个列表项,则会存储该值,窗口中会有一个按钮保存该值并关闭窗口

这就是窗户的样子

现在我的问题是:我需要一个方法,返回用户单击“OK”时选择的值。我的尝试如下所示:

public Field returnSelectedField() {
    FieldSelector fs = new FieldSelector(); //FieldSelector is the class I mentioned before
    return fs.saved;
}
问题是,此方法会立即继续运行,因此不会等待用户单击按钮并保存其选择。现在,我已经阅读了有关多线程的内容,并将该类设置为此方法,以等待其他类完成运行,但我还没有找到一个教程,在其中我了解了该方法的工作原理


如果你们中有一位经验丰富的程序员有一个简单教程的链接,或者有一个解决这个问题的想法,我将不胜感激。我想有一个简单的,我只是找不到

我认为这种材料会很有用

它有很好的按钮示例)

这是关于听众的官方文档,如果你太难理解,试着找到smth来讨论这个主题

简单地说-ActionListener是一个类,它可以“侦听”或等待某个事件,在您的情况下-按下按钮,并在它发生时开始执行您想要的某些操作)


您如何处理单击按钮时发生的情况?“确定”按钮是否与您提到的保存值并关闭窗口的按钮相同?因为这是我在图像上看到的唯一按钮。是的,它是。按下按钮将值保存在类中的“saved”变量中,并关闭窗口。那么,如何处理该按钮事件如果可能,请显示您的方法。另外,为了澄清,您使用的是Swing?是吗?我认为您以错误的方式面对问题。使用列表小部件获取输入并将该输入传递给业务逻辑不应涉及多线程(至少在编程的高层)。最有可能的解决方法是回调。@KleoG啊,等等,我错了。我有一个ListSelectionListener,它将所选值保存在保存的变量中,按钮所做的唯一事情就是关闭窗口。因此ListSelectionListener以所选值作为参数运行以下方法:
public void verarbeitung(对象o){String name=o.toString();for(int i=0;i
谢谢,但我认为,处理按钮的动作不是我的问题。更多的是从我提到的方法中获取返回值,让方法基本上等待我打开的列表中的值。@Ceratius也许我不完全理解你,但据我所知,你不需要你的方法,你可以将ActionListener添加到你的按钮中,这样当用户执行某个操作时(按下按钮)-
actionPerformed(ActionEvent e)
方法被调用,因此在这个方法中,您可以得到您需要的值是的,但问题是我需要一个返回该值的方法。由于actionPerformed必须是一个void方法,这是不可能的,或者有办法吗?@Ceratius否,您不能直接从
actionPerformed(ActionEvent e)
返回值,但我更正了我的第一个答案,以显示执行此操作的可能性=)看一看
public Field selected;

public void actionPerformed(ActionEvent e) { 
     selected =  fs.saved;

}

public Field returnSelectedField() {  

   return selected;

}