Я хочу отключить несколько кнопок одного «типа» в JavaFX. Например, у меня есть несколько кнопок отмены для разных операций, но я бы хотел включить / отключить их все одновременно, но, похоже, я не могу получить к ним доступ внутри LinkedList.
В приведенном нижеПример «минимальный и воспроизводимый», при нажатии кнопки «Пуск» он должен активировать (отключить по умолчанию в fxml) кнопки отмены, но это не так.
DemoController.java
public class DemoController {
@FXML
Button startBtn;
@FXML
Button cancelBtn1; // disabled by default
@FXML
Button cancelBtn2; // disabled by default
@FXML
Tab tab1;
public SDK sdk;
List<Node> cancelBtnGroup = new LinkedList<Node>();
public void initialize() {
cancelBtnGroup.add(cancelBtn1);
cancelBtnGroup.add(cancelBtn2);
startBtn.setOnAction(event -> {
tab1.setDisable(true);
startBtn.setDisable(true);
System.out.println("Disabling cancel buttons");
HashMap<String, String> test = new HashMap<String, String>();
test.put("disableCancel", "false");
sdk.onEvent(test);
});
initializeSDK();
}
public void initializeSDK() {
sdk = new SDK() {
@Override
public void onEvent(HashMap<String, String> e) {
if(e.containsKey("disableCancel")) {
for(Node btn : cancelBtnGroup) {
btn.setDisable(Boolean.parseBoolean(e.get("disableCancel")));
}
}
}
};
}
}
Кажется, я как-то перезаписываю кнопки, но не вижу как. Я чувствую, что не понимаю сферу действия некоторых функций. Я пытался сделать код максимально простым и читабельным, поэтому, если я упускаю что-то чрезвычайно очевидное, может быть, поэтому. Объект SDK не содержит объектов с одинаковыми именами, чтобы быть уверенным, что проблема не в том, что я изменил имена.