gpt4 book ai didi

java - 如何在继续之前等待startup()中的归因完成?

转载 作者:行者123 更新时间:2023-12-02 00:31:08 25 4
gpt4 key购买 nike

我正在制作一个桌面应用程序,它使用 java.nio.file 中的 watchservice 来监视文件夹。但我需要在开始观看之前加载 gui,因为要观看的路径位于 UI 上的 JFieldText 中。

public class FileArchiverApp extends SingleFrameApplication {

static FileArchiverView gui;

@Override protected void startup() {
gui = new FileArchiverView(this); //HERE0 I have to wait for this.
show(gui);
...
public static void main(String[] args) throws IOException {
launch(FileArchiverApp.class, args);
....
WatchService watcher = FileSystems.getDefault().newWatchService();
// HERE1 while(gui==null) System.out.println("hi") ;
try {
Path dir = Paths.get(gui.getOriginPath()); // HERE2 I get nullpointer if gui was not ready
WatchKey key = dir.register(watcher, ENTRY_CREATE );
} catch ( Exception x) {
System.err.println(x);
}

while(true){ /*wait for new file event loop*/ }
}

函数 getOriginPath() 从我提到的文本字段中返回 getText()。

在 HERE0 中是我提到的归属。如果 gui 没有准备好,我会在 HERE2 中得到一个空指针。我已经尝试过了。如果我把那个东西放在 HERE1 中它就可以工作,但我当然不想这样做。

我怎样才能做到呢?

并且它需要很长时间(比如两秒)或 gui 才能停止为空,这里我不知道是否是因为 println,但我期望它几乎是瞬时的。正常吗?

谢谢。

最佳答案

鉴于发布的信息有限,我必须做出一些假设。假设 1 是您为 JTextField 指定一个默认值,并将其用作您要观看的文件的路径。假设 2 是您在编码时没有着眼于类似 MVC 的设计。

如果两者都正确,那么听起来就像是尾部摇着狗一样——保存关键数据的 View ,而不是模型。为什么不通过转向 MVC 来解决您的问题,而不是从 View 而不是从模型获取关键数据。首先启动模型,包括从程序属性中获取默认路径,启动监听器,启动 View ,然后如果 View 要求 Controller 更改监视的文件,则让 Controller 更改模型。然后模型中的监听器将通知您的任何观察者更改。

关于java - 如何在继续之前等待startup()中的归因完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9051041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com