【发布时间】:2017-10-12 22:58:05
【问题描述】:
我希望这里有人可以提供帮助。我只是想围绕观察者设计模式、线程以及如何在我正在做的项目中使用这两者。
我目前需要在使用 Java FX 构建的媒体播放器上实现这两者。
我需要同时使用它们来更新我的 listView(由我目录中文件的 getNames 函数填充。我需要对我的歌曲文件夹进行任何更改以立即反映在 GUI 上。
是否有可能让一个正在运行的线程不断调用我的 getNames 函数(返回一个 items 变量),如果 items 变量有任何更改,那么我可以使用观察者模式通知我的 GUI 类更新其列表.
我知道有可能有一个线程不断地访问该函数,但我只需要一些建议,看看是否可以使用观察者模式来通知项目是否已更改!
我没有要显示的代码,因为我仍在试图弄清楚如何实现它。
有什么想法吗?
感谢任何建议!谢谢:)
更新
经过相当长的一段时间后,得到了这个使用线程和观察者模式的工作。不需要WatchService。使用我的线程不断调用检查更改方法,然后如果方法返回,则观察者启动以更新 GUI。
【问题讨论】:
-
是什么让您认为这不可能?
-
这是可能的,但繁琐且容易出错;考虑
SwingWorker来同步访问线程间共享的数据。 -
我真的很纠结如何让 Observor 检测到文件更改并更改我的 listView。
-
感谢@trashgod,但不幸的是,对于我们必须使用 Observor 和线程来获取标记的项目,我与这种方法有关。
-
java.nio.file.WatchService?
标签: java multithreading user-interface javafx observer-pattern