1

如果一个节点试图在鼠标输入时禁用自己,比如说

final Button btn = new Button("Hello");

btn.setOnMouseEntered(new EventHandler<Event>() {
    @Override
    public void handle(Event event) {
        btn.setDisable(true);
        System.out.println("Mouse in");
    }
});

btn.setOnMouseExited(new EventHandler<Event>() {
    @Override
    public void handle(Event event) {
        btn.setDisable(false);
        System.out.println("Mouse out");
    }
});

当光标在按钮上时,我预计单个“鼠标进入”,但按钮“闪烁”并且“鼠标进入”,“鼠标退出”被一遍又一遍地写入。

这是某种错误,因为 Swing 中的类似代码的行为符合我的预期吗?

4

1 回答 1

0

这是因为当按钮被禁用时,鼠标会离开它,从而触发 MouseExitedEvent。

为避免这种情况,请在调用 setDisable 之前使用 setMouseTransparent 使控件不知道鼠标事件。

于 2013-06-20T15:30:42.527 回答