首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从InvokeAndWait返回值

从InvokeAndWait返回值
EN

Stack Overflow用户
提问于 2015-10-25 14:12:20
回答 1查看 587关注 0票数 0

我有一个Java应用程序,其中视图应该提供一个函数,要求用户选择一个路径,例如。函数应该是阻塞的,直到用户选择了路径(或者如果用户取消了)。

由于在EDT上下文中没有调用该函数,所以我使用invokeAndWait。它看起来如下所示,其中path是视图的私有成员:

代码语言:javascript
复制
private String path;

public String getPath(String defaultPath)
{
    try{
        SwingUtilities.invokeAndWait( () -> {
             // Ask here the user for the path
             path = new PathSelector(defaultPath).getPath();
        }
    } catch (InvocationTargetException e) {
        return "";
    } catch (InterruptedException e) {
        return "";
    }
    return path;
}

我的问题是如何将在EDT上下文中选择的路径传递到最初调用的函数并返回到那里。下面的行已经阻塞:

代码语言:javascript
复制
path = new PathSelector(defaultPath).getPath();

目前,我使用私有成员path解决了这个问题,但实际上我不喜欢这个解决方案,因为path更像是一个临时变量,实际上与类本身无关。为了寻找另一个解决方案,我偶然遇到了SwingWorker,但我想不出如何解决这个‘问题’。

另一个想法可能是创建一个对象,该对象具有一个具有getter和setter成员的字符串,以设置该字符串,并传递该对象的引用,该引用可以在EDT中设置字符串成员,并将其返回到getPath函数中。

有没有人有更顺畅的解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-07 17:41:12

由于没有人想出另一个解决方案,我自己能找到的最好的解决方案是:创建一个简单的对象,其中包含要返回的字符串。因此,我在两个任务上下文中都有一个引用,我可以使用。我有一些意见来改进这个解决方案,我很乐意。

这是保存字符串的类。

代码语言:javascript
复制
public class StringCover {
  private String string = "";

  public String getString() {
    return string;
  }

  public void setString(String string) {
    this.string = string;
  }

}

这是上面这个解决方案的代码。

代码语言:javascript
复制
public String getPath(String defaultPath)
{
    StringCover stringCover = new StringCover();
    try{
        SwingUtilities.invokeAndWait( () -> {
             // Ask here the user for the path
             stringCover.setString(new PathSelector(defaultPath).getPath());
        }
    } catch (InvocationTargetException e) {
        stringCover.setString("");
    } catch (InterruptedException e) {
        stringCover.setString("");
    }
    return stringCover.getString();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33330648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档