Java女子部に参加してきました
Java女子部部活に参加してきました。
今回は、3人それぞれ以下のように別々の課題に取り組みました。
私は、JavaFXのChartをちょっと実装してみました。ちょっとしたグラフはとても簡単に作成できました。
以下のLineChartを実装していてはまったのですが、fxmlファイルで「CategoryAxis」を使用していると、controller側で「XYChart.Series
解決策はFXMLDocument.fxmlの「CategoryAxis」->「NumberAxis」に修正するだけでした(汗)
- FXMLDocumentController.java
... private void setLineChart() { lineChart.setTitle("LineChart"); XYChart.Series<String, Number> series =new XYChart.Series<>(); // ★ここを<Number, Number>でエラー発生 series.getData().addAll(new XYChart.Data<>("1", 10), new XYChart.Data<>("2", 20), new XYChart.Data<>("3", 30) ); lineChart.getData().add(series); } ...
- FXMLDocument.fxml
... <LineChart fx:id="lineChart" GridPane.columnIndex="0" GridPane.rowIndex="1"> <xAxis> <CategoryAxis side="BOTTOM" /> </xAxis> <yAxis> <NumberAxis side="LEFT" /> </yAxis> </LineChart> ...
お菓子タイム以外はすごく集中して実装しました(JavaFXのChart以外にもちょっとはまって今でもまだ解決できていませんが、、、)
- 追記
帰宅して目標の一部(Animationするchart)を実装しました。
本当は、Stream処理でデータを作成して、Streamで集計したデータをChartに動的に表示するようにしたかったのですが、、、
また今後の課題に!
以下の画像で「Start Animating LineChart」ボタンをクリックするとLineChartのY軸の値が1分感覚でランダムに変化します!
JavaFx Animating LineChart
- FXMLDocumentController.java
追加した部分は以下の数行、とても簡単です!やっぱり動きがあるのをみるのは楽しいです!
... @FXML private LineChart animatingLineChart; @FXML Button button; private Timeline tl = new Timeline(); ... private void setAnimatingLineChart() { animatingLineChart.setTitle("Animating LineChart"); XYChart.Series<Number, Number> series =new XYChart.Series<>(); series.getData().addAll(new XYChart.Data<>(1, 10), new XYChart.Data<>(2, 20), new XYChart.Data<>(3, 30) ); animatingLineChart.getData().add(series); // set button event button.addEventHandler(MouseEvent.MOUSE_CLICKED, e -> { if (button.getText().startsWith("Start")){ button.setText("Stop Animating LineChart"); // Start Animating tl.getKeyFrames().add( new KeyFrame(Duration.seconds(1), event -> { animatingLineChart.getData().stream().forEach(serties -> { series.getData().stream().forEach(data -> { Random r = new Random(); data.setYValue(r.nextInt(30)); //★ここで1秒毎のY軸の値を設定 }); }); }) ); tl.setCycleCount(Animation.INDEFINITE); tl.play(); } else { button.setText("Start Animating LineChart"); // Stop Animating tl.stop(); } }); } ...
コードはtomoTaka01/JavaFXChartSample: JavaFX Chart Sampleにアップしています。
Java女子会、とても楽しかったです!
@aa7thさん、いつも会場の手配などいろいろお世話していただいてありがとうございます!!!