Thursday 19 January 2017

JavaFX Gantt Chart

なんか、そういうの学生に課題で出したんですが、自分でやってみようかなと。Java FXのexampleを見れば簡単なはずなんですが...

BarChart

というのはある。あるんだけど、Year は理解できるのだが、Series? どうも、Series に年毎のデータを入れると棒グラフにしてくれるらしい。

なんですが、もっと自由にデータを入れたいんだけど。しばらく、いじって、どうにもできそうにないので、ググったら、

  既に Bubble Chart から Gantt Chart を作った人がいた
http://stackoverflow.com/questions/27975898/gantt-chart-from-scratch

おお。それを使うか。なんですが、

cpu が逆順にならんでしまう

え、なんで。逆順にadd()すれば良いんだろうと思ったが、それでも順序は変わらない。

調べてみると、

XYChart.Series という FXCollections は ObservableListで、それは SortedList

え? 任意の順序にデータを入れられないのか。そういうモデルに制約を入れるようなことされちゃうと汎用性がなくなるんだけど。しかも、どのタイミングで sort されるのかがわからない。setData() しても、あとで順序を変えられてしまう... ひどい。

結局、Series に入れるデータの名前で sort されているみたいなので、それを適当に決めてやれば良いらしい。それと Y軸に表示されるラベルとは*関係ない*。え、そうなの。まぁ、いいか、表示できたから。

ssh://yomitan.ie.u-ryukyu.ac.jp//net/home/hg/teacher/kono/os/OSQueue

というわけで、Java FXの XYChart は割とクソでした。Tk だと、この辺は極めて自由で、表示したグラフをマウスで操作するとかも簡単なんですけどね。sort されてる状況だと任意に動かすのは無理だな。

あと、どうも、Java 1.2とかの時代って「とりあえずObject型で扱って、instanceOf で切り分ける」みたいなプログラミングだったのだけど、Java FXは、それを引き継いでるみたいだな。そういうのどうなの?

No comments: