基本上,我正在创建一个同步HUE灯的程序,而且我在整合侦听器时遇到问题,该侦听器检测灯桥何时与我的JavaFX GUI连接;我希望每当侦听器检测到它已连接时,将标签从“未连接”切换为“已连接”。
这是关于程序结构的一些伪代码。
public class MainClass extends Application {
boolean connected;
Label label;
public static void main(){
launch(args); //Neccesary to start JavaFX
}
public static void start(){
ConnectToHueLights(); //Takes abt 30s to connect to bridge
Label label = “Searching for connection”; //Message while connecting
Window.addLabel(); //Adds label to hue lights
Window.show(); //Makes window visible
}
private HueLightsListener(){
//Once connected, can do whatever inside of a void method inside of this Listener
private void onConnectionResponds(){
label = “Connected”
connected = true;
}
}
public void ConnectToHueLights(){
create new Listener();
}
基本上,只要监听器处于活动状态,标签就不会改变,我不知道该怎么做。
谢谢!
答案 0 :(得分:1)
使用合适的Worker
建立与网桥的连接。为单个工作单元选择Task
;选择Service
来管理多个任务。使用任务的updateMessage()
方法通知工作者的message
属性侦听器。您可以将更新方法的引用传递给HueLightsListener
,如图here所示。
HueLightsListener listener = new HueLightsListener(this::updateMessage);
您onConnectionResponds()
的实施可以根据需要告知accept()
消息的引用。
public void onConnectionResponds() {
updater.accept("Connected");
…
}
另外,在后台运行的call()
实现可以定期轮询连接,同时检查isCancelled()
,然后在连接后发送更多命令。