Activar / Desactivar el Grupo botones al mismo tiempo en JavaFX

Thomas Yamakaitis:

Quiero desactivar varios botones del mismo "tipo" en JavaFX. Por ejemplo, tengo múltiples botón de cancelación para diferentes operaciones, pero me gustaría para activar / desactivar todos al mismo tiempo, pero parece que no puedo acceder a ellos dentro de una LinkedList.

En el ejemplo de abajo "mínima y reproducible", al pulsar inicio, se debe activar los botones (desactivado por defecto en fxml) cancelar, pero no es así.

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")));
                    }
                }
            }
        };
    }
}

Parece que estoy sobrescribir los botones de alguna manera, pero no veo cómo. Siento que no soy la comprensión del alcance dentro de algunas de las funciones. Traté de hacer que el código simplificado y fácil de leer como sea posible, así que si me falta algo muy obvio que puede ser la razón. El objeto del SDK no contiene objetos con el mismo nombre, para asegurarse de que no era el problema que he cambiado los nombres.

Thomas Yamakaitis:

El problema es que estoy desactivando la pestaña que desactiva todos los botones en ella. Yo no notarlo porque sólo tengo 2 botones, uno de los cuales obtiene todos modos desactivado, pero el otro no debería. Así que para mí, parecía que el botón fue simplemente no responde.

Solución

Eliminar tab1.setDisable(true)

Estaba Desactivación de todos mis pestañas para mediados de la operación el usuario no podía pasar de una pestaña, pero se me olvidó que si se desactiva la pestaña actual también desactiva los botones.

Quiero agradecer @Slaw por la ayuda y poner al día con mi actitud. (He tenido experiencias molestas Con tan muchas veces antes, así que tengo una predisposición sobre las respuestas que publican el mismo molesto enlace 1000 veces. Sé que necesito un ejemplo reproducible mínima, pero que no siempre es fácil de hacer, especialmente cuando' volver a trabajar con un SDK externa y el código ya extensa. yo estaba tratando de hacer que sea mínima y reproducible.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=335856&siteId=1
Recomendado
Clasificación