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

コンパイル前に次のエラー警告が表示されます。

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>

これらのエラーが発生する理由について誰かが洞察を持っていますか?

4

2 に答える 2

2

このaddEventHandler()メソッドは 2 つのパラメーターを取ります。1 つは typeTで、もう 1 つはスーパー クラスTです。あなたはそれにEventHandlerと を与えましたIntegerIntegerは のスーパー クラスではないためEventHandler、例外が発生します。

私の推測では、 Java FX のMouseEventではなく、誤ってJava SE の MouseEventを使用していると思われます。

于 2013-07-17T20:36:55.860 に答える
1

問題を修正するために次の変更を加えました。これは 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) {
     }
});
于 2013-07-17T20:40:55.643 に答える