JTree - ツリー

トップ > チップス > JTree - ツリー
2012-02-13, jtree

/tips/java/swing/jtree **JTreeを無効化する JTree.setEnabled(boolean)を実行すると、確かにコンポーネントの操作は無効化されるのですが、外観はそのままです(その他のコンポーネントは色がグレーになったりして見た目にも無効化されていることが分かります)。さらに、カスタムしたレンダラをセットしている場合、それらがリセットされてしまうという問題もあるようです。

そこで、以下の2通りの方法で、何とかします。一つ目は、モデルを外してしまう方法、二つ目は、全てのノードを閉じてしまう方法です。 :private TreeModel model; : :@Override :public void setEnabled(boolean enabled) { : if(enabled){ : setModel(model); : this.model = null; : }else{ : model = getModel(); : setModel(null); : } : super.setEnabled(enabled); :}

:@Override :public void setEnabled(boolean enabled) { : if(enabled){ : expandRow(0); : }else{ : int row = getRowCount() - 1; : while (row >= 0) { : collapseRow(row); : row--; : } : } : super.setEnabled(enabled); :}

この記事は役に立ちましたか?