java - (如何).setOnMouseClicked 覆盖以前的事件并返回到旧事件?

标签 java javafx mouseevent

我有一叠(游戏)卡。其中三个显示(gui),水平为矩形对象,javaFx。默认情况下,我可以通过单击左侧或右侧的卡片来浏览卡片。单个矩形在我的 FXML 文件中 setOnMouseClicked 。他们每个人都有自己的 ID -> (fstCard,scdCard,trdCard)。矩形旁边是一个“选择卡片”按钮。现在,如果我按此按钮,我必须选择这些显示的卡之一,并且我想激活一个方法并返回到默认的 setOnMouseClicked。要激活“选择按钮”:

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*

谢谢!!

最佳答案

您可以将处理程序存储在临时变量中,并在以后需要时恢复它:

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

关于java - (如何).setOnMouseClicked 覆盖以前的事件并返回到旧事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41698695/

相关文章:

Java WebSocket 获取客户端的专有名称

c++ - QTableWidget 右键单击​​事件的问题

c# - wpf 窗口边界外的光标移动事件

python - Pyautogui 在游戏窗口中不起作用

JavaFX、FXML 和 Controller : switching scenes, 维护场景数据

java - 如何在 HBox 中的其他两个节点之间添加节点?

java - 在 Weblogic 12c 中部署基于 Jersey 的 Restful Web 服务

java - 如何更改 Tomcat 中 JSESSIONID 和 jvmRoute 的定界符/分隔符?

java - 当我们使用自己的线程池时,netty可以线程安全吗?如果netty可以,为什么?

java - 切换 FXML 场景