2017-08-26 66 views
-2

基本上,我正在创建一个同步HUE灯光的程序,而且我无法将检测Light Bridge与我的JavaFX GUI连接的侦听器整合在一起;我希望它可以在侦听器检测到它已连接时将标签从“未连接”切换到“已连接”。从其他方法控制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

我很陛下tje代码甚至不编译... – fabian

+0

是的,我知道,这是伪代码。我只想知道为什么JavaFX不会让我更新start()方法以外的标签,以及如何去做。实际代码很复杂,因为GUI有多大以及HUE灯的工作原理 –

+0

您是否在'Listener'中添加了'System.out.println(“Hello!);'以确保它弹出? – Sedrick

回答

1

使用合适的Worker建立到桥的连接。对于单个工作单元选择Task;选择Service来管理多个任务。使用任务的updateMessage()方法通知工作人员的message属性侦听器。您可以将参考更新方法传递给您的HueLightsListener,如here所示。

HueLightsListener listener = new HueLightsListener(this::updateMessage); 

你实现onConnectionResponds()能够告诉你这个参考accept()消息的需要。

public void onConnectionResponds() { 
    updater.accept("Connected"); 
    … 
} 

顺便说一句,你的实现call(),它在后台运行,可以定期轮询连接,同时检查isCancelled(),然后再发送一次连接多个命令。