(如何).setOnMouseClicked 覆盖以前的事件和 return 到旧事件?
(How to) .setOnMouseClicked overwrite former event and return to old event?
我有一叠(游戏)卡片。其中三个显示(gui),水平为矩形对象,javaFx。默认情况下,我可以通过单击左侧或右侧的卡片来浏览卡片。单个矩形在我的 FXML 文件中设置了 setOnMouseClicked。他们每个人都有自己的 ID -> (fstCard,scdCard,trdCard)。矩形旁边是一个按钮 "Choose Card"。现在,如果我按下这个按钮,我必须选择这些显示的卡片之一,我想激活一个方法和 return 到默认的 setOnMouseClicked。要激活 "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*
谢谢!!
已修复:
调用默认方法即可..
fstDeve.setOnMouseClicked(event1 -> switchChooseDevCard(event1));
您可以将处理程序存储在一个临时变量中,并在以后需要时恢复它:
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);
我有一叠(游戏)卡片。其中三个显示(gui),水平为矩形对象,javaFx。默认情况下,我可以通过单击左侧或右侧的卡片来浏览卡片。单个矩形在我的 FXML 文件中设置了 setOnMouseClicked。他们每个人都有自己的 ID -> (fstCard,scdCard,trdCard)。矩形旁边是一个按钮 "Choose Card"。现在,如果我按下这个按钮,我必须选择这些显示的卡片之一,我想激活一个方法和 return 到默认的 setOnMouseClicked。要激活 "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*
谢谢!!
已修复: 调用默认方法即可..
fstDeve.setOnMouseClicked(event1 -> switchChooseDevCard(event1));
您可以将处理程序存储在一个临时变量中,并在以后需要时恢复它:
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);