ともさんのHP >プロブラミング >JavaFX >JavaFX TreeView

JavaFX TreeViewのサンプルコード

JavaFXでツリービュー(TreeView)を使ってみたので、サンプルプログラムも作ってみました。
ツリービューは、アイテムをツリー構造で表示でき、子の表示を表示/非表示したりできます。
Swingではなかった機能ですが、メニューとして使いやすそうですね。
JavaFXTreeView動画

広告


ツリー構造の作成手順

まず、TreeItemを用意します。

  TreeItem[] ti = new TreeItem[16];
  ti[0] = new TreeItem( "TOP" );
  ti[1] = new TreeItem( "部屋" );
  ti[2] = new TreeItem( "ボディ" );
  ti[3] = new TreeItem( "服" );

TreeItem間に親子関係を付けます。

  for(int i=1;i<4;i++){ ti[0].getChildren().add(ti[i]); }

全てのTreeItemに親子関係をつけ終えたら、TreeViewを定義して、一番上のTreeItemを指定します。

  TreeView tree = new TreeView( ti[0] );  

このTreeViewをPaneに貼りつければ完成。

ツリーをあらかじめ展開する

ツリー構造を展開して、子アイテムを最初から表示する場合は、展開する親アイテムを下記のように展開指定します。

  ti[0].setExpanded(true);      

広告


サンプルプログラム

コードを実行すると、下記の結果が得られます。
JavaFXTreeView

package tomojavalib.fx;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.layout.*;
import javafx.stage.Stage;

/**TreeViewの試験Class*/
public class TreeViewTest extends Application {

 public static void main(String[] args) {
  launch(args);
 }
    
 @Override
 public void start(Stage primaryStage) {
  primaryStage.setTitle("TreeView試験");
  TreeItem[] ti = new TreeItem[16];
  ti[0] = new TreeItem( "TOP" );
  ti[1] = new TreeItem( "部屋" );
  ti[2] = new TreeItem( "ボディ" );
  ti[3] = new TreeItem( "服" );
  for(int i=1;i<4;i++){ ti[0].getChildren().add(ti[i]); }
  ti[4] = new TreeItem( "照明" );
  ti[5] = new TreeItem( "カメラ" );
  ti[6] = new TreeItem( "壁1" );
  ti[7] = new TreeItem( "壁2" );
  ti[8] = new TreeItem( "床" );
  for(int i=4;i<9;i++){ ti[1].getChildren().add(ti[i]); }
  ti[9] = new TreeItem( "布" );
  ti[10] = new TreeItem( "身頃" );
  ti[11] = new TreeItem( "縫合" );
  for(int i=9;i<12;i++){ ti[3].getChildren().add(ti[i]); }        
  
  TreeView tree = new TreeView( ti[0] );  
  ti[0].setExpanded(true);      
  FlowPane root = new FlowPane();
  root.getChildren().add(tree);
  primaryStage.setScene(new Scene(root, 200, 250));
  primaryStage.show();
 }
}


画像を追加する

アイテムに画像を追加する場合は、画像を読み込んで、

private final Node Icon = new ImageView( new File( "d:/work/java/a.png" ).toURI().toString() );

アイテム作成時に追記する。

ti[0] = new TreeItem( "TOP" , Icon);

実行結果
ツリービューに画像



イベントを追加する

マウスでどのTreeItemが選択されたかを知るには、TreeViewの設定後に下記のようにイベントを設定する。

tree.getSelectionModel().selectedItemProperty().addListener( new ChangeListener() {
 @Override
 public void changed(ObservableValue observable, Object oldValue, Object newValue) {
  TreeItem selectedItem = (TreeItem) newValue;
  //System.out.println("Selected Text : " + selectedItem.getValue());
  TreeViewTest.this.mouseClick( selectedItem );
 }
});  

イベントを受けて処理するメソッドも用意しておく。

  FlowPane root = new FlowPane();
  root.getChildren().add(tree);
  primaryStage.setScene(new Scene(root, 320, 240));
  primaryStage.show();
 }

最終更新日: 2017-04-06 16:30:03

ともさんのHP >プロブラミング >JavaFX >JavaFX TreeView

広告
新着ページ

AIを利用し、衣服のデザイン画から型紙を制作する方法  
2つのアパレル3D技術でひらくオーダーメイド生産の手法  
【洋裁型紙】前後身頃の肩の傾きは何故前身頃の方が傾いているのか  
電子追尾式天体写真撮影法  
日本ミツバチ巣箱の種類  
ドラフター(製図台)でソーイング  
日本ミツバチが逃亡  
カメさんの箱庭  
天体用デジタルカメラの構造と天体写真  
Javaで静止画像(Jpeg)を動画(Mov)に変換  
USBカメラをJAVAで制御  

他のサイト

3D-CAD
洋裁CAD

いいねなど

 RSS 

Author: Tomoyuki Ito

このサイトの文章・写真の無断転載を禁じます