Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

TreeViewerの値取得方法教えてください


すみません。どなたか教えてください。
TreeViewerにチェックボックスを付けて、その値を取得したいんですがどのように取得すればいいのかわかりません。

TreeViewer tree = new TreeViewer( shell, SWT.CHECK );
tree.setContentProvider( new ExplorerContentProvider() );
tree.setLabelProvider( new ExplorerLabelProvider );
tree.setInput( new File( "c:\\" ) );

と、やって、shellにチェックボックス付きでTreeが表示されるまではよかったのですが、
・チェックボックスにチェックが付いてるか(チェックが複数の場合も)の値取得方法
・チェックの付いているディレクトリ(ファイル)情報の取得方法
がわかりません。

調べてみると、

ISelection Selection = tree.getSelection();

と、までは書いてあったのですが「Selection」をどう使っていいのかまではわからずじまいでした。
どなたかご存知の方はいらっしゃいませんでしょうか?

3

回答

89957

閲覧

3件の回答

評価

0

ExplorerContentProviderがどんなものなのか知りませんが、SWT.CHECKをサポートしているとも思えないので…以下はあくまでも一例として。

 showCheckedItems(tree.getTree().getItems());
  //TreeViewerからTreeを取得して直下のアイテムを再帰用メソッドに渡す

 private void showCheckedItems(TreeItem[] items) {
  for (int i = 0; i < items.length; i++) {
   if (items[i].getChecked()) { //チェックが付いていたらば
    showMessage(items[i].getText()); //それなりの処理をする
   }
   if (items[i].getItemCount() > 0) { //この下にアイテムがあれば
    showCheckedItems(items[i].getItems()); //再帰呼び出し
   }
  }
 }

ディレクトリ/ファイル情報の取得は java.io.File 辺りを参照してください。

評価

0

な〜んだ。今日Bugzilla眺めてて気づいたんですが、チェックボックス付きのTreeViewerって、ずばりCheckboxTreeViewerってのがあるじゃないですか。これならチェックが付いているアイテムはgetCheckedElements()一発で取得できますね。

評価

0

返事が遅くなってしまいました。すみません。
ずっとできなかったんです。助かりました。
しかも、違うViewerまで探していただいて、すんごい感謝致します。ありがとうございます。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。