JavaFX 2:对mouseEntered,奇怪的行为进行自我禁用

时间:2013-06-20 15:05:00

标签: javafx-2 mouseevent

如果节点在输入鼠标时尝试禁用自身, 说

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

我预计单身&#34;鼠标在&#34;而光标是 在按钮上,但按钮是&#34;闪烁&#34;和 &#34;鼠标在&#34;,&#34;鼠标输出&#34;一遍又一遍地写着。

这是某种错误,因为类似的代码 在Swing表现如我所料?

1 个答案:

答案 0 :(得分:0)

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

要避免这种情况,请在调用setDisable之前使用setMouseTransparent使控件不知道mouseevents。