LoginSignup
2

More than 5 years have passed since last update.

posted at

updated at

JavaFX TreeViewにアイテム編集の機能を付ける

2013 年の JavaFX Advent Calendar の5日目のエントリーです。
前日は skrb さんでした!!
明日は HASUNUMA Kenji さんです。

TreeViewを操作するユーザにとっては、アイテムの編集・追加・削除、Drag and Dropによるコピーや移動はごく当たり前にできると思うかもしれません。でも、JavaFXのTreeViewにはもともとこれらの機能が備わっていないので、プログラマが自前でゴリゴリ作る必要があります。

TreeViewといっても大きく分けて4種類の部品があって、下図はMVCパターンで表現したものです。

MVC002.gif

TreeViewとTreeItemはJavaFXのをそのまま使うとして、背景色が黄色のものはプログラマが作る必要があります。
TreeViewコントローラはビューとモデルを制御するもので、ゼロから作ります。TreeCellはJavaFXにありますが、アイテムの編集やDrag and Drop操作をサポートしたければ派生クラスを作ります。「データ」はアプリケーションに必要な情報を保持するだけでなく、TreeCellの見せ方にも関与します。

たとえば、Windowsのエクスプローラのようなファイラでは、TreeViewはフォルダごとにアイコンとフォルダ名が表示されていますね。となると、「データ」には少なくともアイコンとフォルダ名に関する何らかの情報を持っている必要がある、、、というふうに設計するんでしょうね。

以上をふまえ、TreeViewで「アイテムの編集ができる」ようにカスタマイズする方法について、4回に分けて記事を書きましたのでご紹介します。
(Drag and Drop操作については、またあとで紹介できたらいいなと思っています)

  1. JavaFX TreeViewのカスタマイズ - その1:TreeItemのデータクラスの作成
  2. JavaFX TreeViewのカスタマイズ - その2:TreeCellの作成
  3. JavaFX TreeViewのカスタマイズ - その3:TreeCell用Graphicの作成
  4. JavaFX TreeViewのカスタマイズ - その4:TreeViewコントローラの作成

GitHubにもソースコードを上げてあります。Java 8のJava FXで動作確認済みです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2