TreeViewのCellFactoryをScalaFXでやろうと思ったら、どうも上手くいかない。
TreeCellのupdateItemをオーバーライドしたいわけだが、コンパイルの時点で怒られる。

override_error



いやそんなこといわれても。
ちなみにJavaFXのTreeCellならちゃんとオーバーライドできる。(当たり前)

しょうがないのでソースを見てみると、TreeCell(の親クラスのIndexedCell)が、Cellを継承してないよ...?
JavaFXだと、Labeled <- Cell <- IndexedCell <- TreeCell
ScalaFXは、Labeled <- IndexedCell <- TreeCell 

updateItemを持ってるのはCellだからそりゃ怒られる。
じゃあローカルで修正して使ってみるか?ということで、TreeCell/IndexedCell/Cellを調べてみたら、そもそもCellにもupdateItemが実装されてない。
で、Cellのソースの最後にTODOが。
  // TODO: implement updateItem(T item, boolean empty)
  // might be difficult since updateItem is a protected method which needs to be defined in the delegate's class

ああ...そうか、updateItemはprotectedか...。

ScalaFXのクラスはJavaFXのクラスを直接継承しているわけじゃないから、こういうケースを上手くラップするのは確かに難しそうだなぁ。
とりあえず現時点ではJavaFXのクラスを使わざるを得ないか。しょうがないんだけど、なんかいい方法がないもんだろうか...。