2013-07-17 33 views
0

我已經創建了一個javafx餅圖,並且想要在用戶點擊一個餅圖片時執行某些操作。我下面這個教程:餅圖的事件處理

for (final PieChart.Data data : chart.getData()) { 
data.getNode().addEventHandler(MouseEvent.MOUSE_PRESSED, 
    new EventHandler<MouseEvent>() { 
     @Override public void handle(MouseEvent e) { 
      caption.setTranslateX(e.getSceneX()); 
      caption.setTranslateY(e.getSceneY()); 
      caption.setText(String.valueOf(data.getPieValue()) + "%"); 
     } 
    }); 

我正在編譯之前這些錯誤警告: 在 「.addEventHandler」

Bound mismatch: The generic method addEventHandler(EventType<T>, EventHandler<? 
superT>) of type Node is not applicable for the arguments (Integer, new 
EventHandler<MouseEvent> (){}). The inferred type MouseEvent&Event is not a valid 
substitute for the bounded parameter <T extends Event> 

在 「事件處理程序」

Bound mismatch: The type MouseEvent is not a valid substitute for the bounded parameter 
<T extends Event> of the type EventHandler<T> 

不任何人有任何見解,爲什麼我得到這些錯誤?

回答

2

addEventHandler()方法採用兩個參數:T類型之一,和一個超類T。你給它一個EventHandler和一個Integer。由於Integer不是EventHandler的超級類別,因此會發生異常。

我的猜測是你不小心使用了Java SE's MouseEvent而不是Java FX's MouseEvent

+0

是的,eclipse跟我說的一樣多。不過謝謝您的詳細介紹。 – PandaBearSoup

+0

您對使用錯誤的MouseEvent進行編輯是正確的。 – PandaBearSoup

1

我做了以下更改以解決問題,th是javafx特定的。

for (final PieChart.Data data : chart.getData()) { 
data.getNode().addEventHandler(javafx.scene.input.MouseEvent.MOUSE_PRESSED, 
new EventHandler<javafx.scene.input.MouseEvent>() { 
    @Override public void handle(javafx.scene.input.MouseEvent e) { 
    } 
});