Reputation: 35
I have a stack of (game) cards. Three of them are displayed (gui), horizontal as rectangle objects,javaFx. At default i can go through the cards by clicking the left or the right card. The single rectangles are setOnMouseClicked in my FXML file. Each of them has is own ID -> (fstCard,scdCard,trdCard). Next to the rectangles is a button "Choose Card". Now, if i press this button i had to choose one of these displayed cards and i want activate a method and return to the default setOnMouseClicked. To activate the "Choose button" :
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*
Thanks!!
Upvotes: 1
Views: 1509
Reputation: 1990
You can store the handler in a temporary variable and restore it later when needed:
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);
Upvotes: 1
Reputation: 35
fixed it: Just call the default method..
fstDeve.setOnMouseClicked(event1 -> switchChooseDevCard(event1));
Upvotes: 0