2013-06-20 14 views
1

, 說的JavaFX 2:如果一個節點試圖禁用本身鼠標進入對自我的mouseEntered,禁用,行爲怪異

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中的類似代碼 的行爲如我所料?

+0

其實,我得到了我想要的: btn.setMouseTransparent(true); – marija

+0

那麼它將如何處理鼠標事件呢?該按鈕將保持禁用進一步的鼠標事件。 –

+0

在我的原始程序中,我有一些複選框 ,我想只選擇/取消選擇編程, ,他們有一些文字填充顏色設置,因爲 我不想永久禁用它們。 所以,只是setMouseTransparent(true)解決了我的問題。 – marija

回答

0

這是因爲當一個按鈕被禁用時,鼠標正在離開它,從而觸發一個MouseExitedEvent。

爲了避免這種情況,請在調用setDisable之前使用setMouseTransparent使控件不知道mouseevents。

+0

謝謝!在此期間,我得到了它:) – marija