簡體   English   中英

餅圖的事件處理

[英]Event Handling for Pie Chart

我創建了一個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>

在“ EventHandler”上

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

是否有人對我為什么會出現這些錯誤有任何見解?

addEventHandler()方法采用兩個參數:一個為T類型,另一個為具有超類T 您給了它一個EventHandler和一個Integer 由於Integer不是EventHandler的超類,因此會出現異常。

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

我進行了以下更改以解決此問題,它是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) {
     }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM