Управление JavaFX GUI из других методов?
По сути, я создаю программу, которая синхронизирует источники света HUE, и у меня возникают проблемы с включением прослушивателя, который обнаруживает, когда мост подключен к моему графическому интерфейсу JavaFX; Я хочу, чтобы метка переключалась с "Не подключено" на "Подключено" всякий раз, когда слушатель обнаруживает, что он подключен.
Вот некоторый псевдокод того, как программа структурирована.
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 ответ
Используйте подходящий Worker
установить соединение с мостом. выберите Task
за одну единицу работы; выбирать Service
управлять несколькими задачами. Используйте задачу updateMessage()
способ уведомить работника message
собственность слушателей. Вы можете передать ссылку на метод обновления на ваш HueLightsListener
, как показано здесь.
HueLightsListener listener = new HueLightsListener(this::updateMessage);
Ваша реализация onConnectionResponds()
может тогда сказать ссылку на accept()
сообщения по мере необходимости.
public void onConnectionResponds() {
updater.accept("Connected");
…
}
Кроме того, ваша реализация call()
, который работает в фоновом режиме, может периодически опрашивать соединение, одновременно проверяя isCancelled()
, а затем отправьте больше команд после подключения.