J'ai une pile de cartes (de jeu). Trois d'entre eux sont affichés (gui), horizontaux comme des objets rectangulaires, javaFx. Par défaut, je peux parcourir les cartes en cliquant sur la carte de gauche ou de droite. Les rectangles uniques sont setOnMouseClicked dans mon fichier FXML. Chacun d'eux a son propre ID -> (fstCard, scdCard, trdCard). A côté des rectangles se trouve un bouton "Choisir une carte". Maintenant, si j'appuie sur ce bouton, je devais choisir l'une de ces cartes affichées et je veux activer une méthode et revenir à la valeur par défaut setOnMouseClicked. Pour activer le "bouton Choisir":

public void switchChooseDevCard(MouseEvent event) {


    if(event.getSource().equals(chooseButton)){

        fstDeve.setOnMouseClicked(event1 -> System.out.print("hello"));
 **----->> how can i return to the default ?**
    }

    if (event.getSource().equals(fstCard)) {
        ba = devCardStack.size() - 1;
        if (devCardStack.size() <= 3) {
            giveTooltip();
        } else if (devCardStack.size() > 3) {
            int passages = devCardStack.size();
            fstDeve.setFill(scdDeve.getFill());
            scdDeve.setFill(trdDeve.getFill());

            if (a >= 3 && a < passages) {
                trdDeve.setFill(devCardStack.get(a));
                a++;
                giveTooltip();
            } else if (a == passages) {
                a = 0;
                trdDeve.setFill(devCardStack.get(a));
                a++;
                giveTooltip();
            } else {
                trdDeve.setFill(devCardStack.get(a));
                a++;
                giveTooltip();
            }
        }
    }  *rest of the code*

Merci!!

1
ChrisR 17 janv. 2017 à 16:41

2 réponses

Meilleure réponse

Vous pouvez stocker le gestionnaire dans une variable temporaire et le restaurer ultérieurement si nécessaire:

    Button btn = new Button("Test");

    //default event handler
    btn.setOnMouseClicked(new EventHandler<Event>() {
        @Override
        public void handle(Event event) {
            System.out.println("hello");
        }
    });

    //store default event handler
    EventHandler<Event> oldHandler = (EventHandler<Event>) btn.getOnMouseClicked();

    //set new event handler
    btn.setOnMouseClicked(new EventHandler<Event>() {
        @Override
        public void handle(Event event) {
            System.out.println("test");
        }
    });

    //restore default event handler
    btn.setOnMouseClicked(oldHandler);
1
user7291698 17 janv. 2017 à 14:08

Corrigé: appelez simplement la méthode par défaut.

fstDeve.setOnMouseClicked(event1 -> switchChooseDevCard(event1));
0
ChrisR 17 janv. 2017 à 14:06