首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaFx ToggleSwitch On Off同步

JavaFx ToggleSwitch On Off同步
EN

Stack Overflow用户
提问于 2018-08-08 06:45:03
回答 1查看 269关注 0票数 1

我正在使用controlsfx ToggleSwitch来模拟串行端口连接的开/关按钮。问题是当我试图打开一个已经在使用中的端口时。我将其设置为false,这将再次触发该事件。所以它调用不同的if块。它会自我循环,然后从头开始。你知道我怎么才能克服这个问题吗?谢谢。

代码语言:javascript
复制
portSwitch.selectedProperty().addListener(((observable, oldValue, newValue) -> {
        if (newValue) {// try to connect to the port 
           openPort=port.open();
            if (openPort) {
              portSwitch.selectedProperty().set(true);//enable the switch
            } else {
              portSwitch.selectedProperty().set(false);//port is already in use. turn off the switch
            }
        } else {//disconnecting from the port 
            if(!port.isOpen()) //if the port is succelly closed
            {
                portSwitch.selectedProperty().set(false);//turn off the switch
            }else{//Could not close the port. 
                portSwitch.selectedProperty().set(true);//So let the switch stay on 
            }
        }
    }));
EN

回答 1

Stack Overflow用户

发布于 2018-08-08 22:09:31

谢谢你们的回答伙计们。但是我已经编写了我的自定义开关并应用了下面的逻辑。如果需要的话,我可以把它贴出来。

代码语言:javascript
复制
 void connectionListener() {

    connectionButton.switchedOnProperty().addListener((obs, oldState, newState) -> {
        final boolean oldConnectionStatus = port.isOpen();
        final boolean isOn = newState.booleanValue();
        if (isOn) {
           //Logic 
           changeSwitchStatus(isOn, oldConnectionStatus));
        } else {
         //logic 
         changeSwitchStatus(isOn, oldConnectionStatus));
        }
    });
}



private void changeSwitchStatus(boolean newStatus, boolean oldConnectionStatus) {
    final boolean newConnectionStatus =  port.isOpen();
    if (!oldConnectionStatus) {
        if (newConnectionStatus && newStatus) {
           //logic
            connectionButton.turnOn();
        }
        if (!newConnectionStatus && newStatus) {
            //logic
            connectionButton.turnOff();
        }

    } else {
        if (!newConnectionStatus && !newStatus) {
            //logic
            connectionButton.turnOff();
        }
        if (newConnectionStatus && !newStatus) {
             //logic
            connectionButton.turnOn();
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51736405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档