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

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

0

JTreeに埋め込まれたチェックボックスの状態取得

下記ページを参考にJTreeにチェックボックスを設定しま
した。

http://terai.xrea.jp/Swing/CheckBoxNodeEditor.html

葉ノードの状態(チェックボックスのオン/オフ)を取得し
たいのですが、方法を教えて頂けませんでしょうか。

よろしくお願いします。

2

回答

94911

閲覧

2件の回答

評価

0

文面から「各ノード毎にチェックボックスの実体があっ
て、特定のノードのチェックボックスはどうやって参照
するのだろう」ということを疑問に思っておられると推
測して回答します。

各ノードそれぞれにチェックボックスがあるわけではあ
りません。TreeCellRenderer/TreeCellEditorが(全て
のノードの描画・編集に共通に使いまわす)GUIコンポ
ーネントを一組だけ保持していて、特定のノードの描
画・編集時だけ一時的にGUIコンポーネントをそのノー
ド用に使っている・・・という具合になっています。

そんな訳で下記のように考えます。

1.チェックボックスで表示したい情報は設計者が「ノー
ド」に実装する。この状態を参照・設定したいときは
「ノード」自体に対して行います。

2.描画・編集用にはTreeCellRenderer/TreeCellEditor
の派生を定義し1.で述べた特別な情報の表示・編集部分
を実装し、これらのインスタンスをJTableに設定しま
す。

評価

0

ご回答ありがとうございます。
以下のように記述することで、取得できました。

TreeModel model=jtree1.getModel();
DefaultMutableTreeNode root= 
(DefaultMutableTreeNode)model.getRoot();
Enumeration e = root.breadthFirstEnumeration();
// ルートノードから配下をすべて検索
while(e.hasMoreElements()) {
    DefaultMutableTreeNode node=
(DefaultMutableTreeNode)e.nextElement();
    CheckBoxNode TARGET_CHECK_BOX=(CheckBoxNode) 
node.getUserObject();
    if(node.isLeaf()){
        
if(TARGET_CHECK_BOX.status.toString().equals("SELE
CTED")){
            // チェックボックスがオンの葉
            //System.out.println(node);
        }
    }
}

ありがとうございました。

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