【发布时间】:2018-02-13 16:06:56
【问题描述】:
我有一个类可以打开一个带有列表的窗口,用户可以从中选择一个项目。所有这些都有效,如果选择了一个列表项,则值会被存储,并且窗口中有一个按钮可以保存值并关闭窗口。
这就是窗口的样子。
现在我的问题是:我需要一个方法来返回用户单击“确定”时选择的值。我的尝试如下所示:
public Field returnSelectedField() {
FieldSelector fs = new FieldSelector(); //FieldSelector is the class I mentioned before
return fs.saved;
}
问题是,此方法会立即继续运行,因此它不会等待用户单击按钮并保存他的选择。现在,我已经阅读了有关多线程的信息,并使这个方法正在等待另一个类完成运行,但是我还没有找到一个我理解它是如何工作的教程。
如果你们中的一位经验丰富的编码人员能够提供指向简单教程的链接或解决此问题的想法,我将不胜感激。我想有一个简单的,我只是找不到。
【问题讨论】:
-
如何处理单击按钮时发生的情况? “确定”按钮是否与您提到的保存值并关闭窗口的按钮相同?因为这是我在图片上看到的唯一按钮。
-
是的。按下按钮将值保存在类中的“已保存”变量中并关闭窗口。
-
那么,你如何处理那个按钮事件呢? - 如果可以展示您的方法。另外,为了澄清一下,您使用的是 Swing 是吗?
-
我认为您以错误的方式面对问题。使用列表小部件获取输入并将该输入传递给业务逻辑不应该涉及多线程(至少在您正在编程的高级别)。它应该通过回调来解决。
-
@KleoG 啊等等,我错了。我有一个 ListSelectionListener 将所选值保存在已保存的变量中,按钮所做的唯一事情就是关闭窗口。因此 ListSelectionListener 以所选值作为参数运行以下方法:
public void verarbeitung(Object o) { String name = o.toString(); for (int i = 0; i < globalList.size(); i++) { if (name.equals(globalList.get(i).getName())) { saved = globalList.get(i); } } }
标签: java multithreading wait