2017-12-13 6 views
0

私は選択したパイチャートスライスのパーセンテージを表示しようとしています。私はGoogleで検索し、誰もがマウスイベントで新しいイベントハンドラを追加しています。コードを実装しようとすると、次のエラーが発生します。javafx piechartでイベントハンドラーを追加できません

私は間違っていますか?私はエラーでGoogleを検索しようとしましたが、何も来ていません。

当該コントローラ:

package com.hva.fastenyourseatbelt; 

import java.awt.event.MouseEvent; 
import java.net.URL; 
import java.util.List; 
import java.util.ResourceBundle; 
import javafx.collections.FXCollections; 
import javafx.collections.ObservableList; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.fxml.FXML; 
import javafx.fxml.Initializable; 
import javafx.scene.Parent; 
import javafx.scene.chart.PieChart; 
import javafx.scene.control.ComboBox; 
import javafx.scene.control.Label; 
import javafx.scene.paint.Color; 
import utilities.DatabaseUtils; 
import static utilities.StatisticsUtils.giveAirports; 

/** 
* FXML Controller class 
* 
* @author Mourad A 
*/ 
public class FXMLStatistiekenController implements Initializable { 

    /** 
    * Initializes the controller class. 
    */ 
    @FXML 
    private ComboBox<String> CBStatisticsCountry; 

    @FXML 
    private ComboBox<String> CBStatisticsAirport; 

    @FXML 
    private ComboBox<String> CBStatistiekenYear; 

    @FXML 
    private ComboBox<String> CBStatistiekenMonth; 

    @FXML 
    private PieChart pieChart; 

    @Override 
    public void initialize(URL url, ResourceBundle rb) { 

     ObservableList list = DatabaseUtils.getType(); 

     pieChart.setData(list); 
     pieChart.setTitle("Type bagage"); 

     final Label caption = new Label(""); 
     caption.setTextFill(Color.DARKORANGE); 
     caption.setStyle("-fx-font: 24 arial;"); 

     for (final PieChart.Data data : pieChart.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()) + "%"); 
       } 
      }); 
     } 
    } 

    @FXML 
    private String receiveCountries(ActionEvent event) { 
     String country = CBStatisticsCountry.getValue(); 
     return country; 
    } 


} 

おかげ

編集:追加全体コントローラ

+0

完全なファイルを含めてください。最も可能性の高い説明は、JavaFXの代わりに 'MouseEvent'のAWTまたはSwingバージョンをインポートしたことです。 – Itai

+0

@sillyfly投稿を編集しました – Bas

+0

@sillyfly javafxの亜種をインポートに置き換えました。お手伝いありがとう。私はそれを受け入れることができるようにこれを回答として投稿できますか? – Bas

答えて

0

エラーが誤っjava.awt.event.MouseEvent代わりにjavafx.scene.input.MouseEventをインポートすることによるものです。最大のヒントは、EventType<T>の代わりに実際のタイプがintであり、インポートの不一致を意味します。古いAPIでは静的整数定数が使用されますが、新しいAPIでは列挙型が優先されます。

関連する問題