从其他方法控制JavaFX GUI?

时间:2017-08-26 13:36:12

标签: java user-interface javafx philips-hue light

基本上,我正在创建一个同步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();
}

基本上,只要监听器处于活动状态,标签就不会改变,我不知道该怎么做。

谢谢!

1 个答案:

答案 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(),然后在连接后发送更多命令。