我有一些javafx按钮,它们向代理发送MQTT消息。当按钮状态改变时(ON为OFF或OFF为ON),将发送消息。该按钮还订阅了它发送的消息,我想在消息到达时更改按钮的可视指示。 我想这样做的原因是因为消息也可能来自另一个来源(网络中的另一个设备)。我想显示按钮中最后一条消息的状态。 如何确保鼠标事件不会改变按钮的视觉识别,而另一个事件确实会改变按钮的视觉识别?
我现在有了这个:
public class SlideCheckBox extends CheckBox implements RelayAwareInterface, MqttMessageSubscriberInterface {
private String relayName;
public SlideCheckBox(final String text) {
super(text);
getStylesheets().add(getClass().getResource("/css/slidecheckbox.css").toExternalForm());
setSkin(new SlideCheckBoxSkin(this));
}
public void withRelay(String relay) {
relayName = "relay/" + relay;
}
@Override
public void receiveMessage(String message) {
if (message.equals("CLOSED") && !isArmed()) {
fire();
} else if (message.equals("OPEN") && isArmed()) {
fire();
}
}
@Override
public String getName() {
return relayName;
}
@Override
public String getState() {
return selectedProperty().getValue() ? "CLOSED" : "OPEN";
}
}