私は学校の最後のプログラミング タスクに取り組んでおり、JavaFx の動的な円グラフの形で、Java アプリケーションに小さな機能的な目の保養を追加したいと考えていました。
Netbeans 7.2 rc2 を使用して、テンプレートから swing/javafx ハイブリッド アプリケーションを作成しました。JPanelClass を拡張して、メイン アプリケーションが FX 機能にアクセスするために使用できるシェルを作成しました。ただし、私が直面している問題は、チャートの初期化がスムーズに行われている一方で、爆破されたものを更新しようとすると、Null Pointer Exception が生成されることです。ここに関連するコードがあると思います:
インスタンス化:
public class PieChartJFxPanel extends JApplet {
private static final int JFXPANEL_WIDTH_INT = 500;
private static final int JFXPANEL_HEIGHT_INT = 500;
StackPane root = new StackPane();
PieChart athleteChart;
ObservableList<PieChart.Data> pieChartData =FXCollections.observableArrayList();
private static JFXPanel fxContainer;
private int fAthletes=0;
private int rAthletes=0;
public PieChartJFxPanel(int totalAthletes,int finishedAthletes){
super();
fAthletes=finishedAthletes;
rAthletes=totalAthletes-fAthletes;
}
@Override
public void init() {
fxContainer = new JFXPanel();
fxContainer.setPreferredSize(new Dimension(JFXPANEL_WIDTH_INT, JFXPANEL_HEIGHT_INT));
add(fxContainer, BorderLayout.CENTER);
// create JavaFX scene
Platform.runLater(new Runnable() {
@Override
public void run() {
createScene();
}
});
}
シーン コンストラクター:
private void createScene() {
pieChartData.add(new PieChart.Data("Finished",fAthletes));
pieChartData.add(new PieChart.Data("Outstanding",rAthletes));
athleteChart=new PieChart();
athleteChart.setLegendVisible(false);
athleteChart.setTitle("Race Status");
//athleteChart.setAnimated(true);
athleteChart.setData(pieChartData);
root.getChildren().add(athleteChart);
fxContainer.setScene(new Scene(root));
//
}
そして、例外を生成したメソッド:
public void setData(int total, int in){
final ObservableList<PieChart.Data> pieChartDat=FXCollections.observableArrayList();
pieChartDat.add(new PieChart.Data("Finished",fAthletes));
pieChartDat.add(new PieChart.Data("Outstanding",rAthletes));
athleteChart.setData(pieChartDat);
}
そして例外:
Exception in thread "main" java.lang.NullPointerException
at piechartjpanel.PieChartJFxPanel.setData(PieChartJFxPanel.java:95)
at piechartjpanel.AthleteIOChart.setAthletes(AthleteIOChart.java:62)
at piechartjpanel.Test.setter(Test.java:34)
at piechartjpanel.Test.main(Test.java:48)
どんな助けでも大歓迎です:)事前に感謝します