モジュール java.desktop
パッケージ javax.swing

クラスJTree

java.lang.Object
すべての実装されたインタフェース:
ImageObserver, MenuContainer, Serializable, Accessible, Scrollable

@JavaBean(defaultProperty="UI", description="A component that displays a set of hierarchical data as an outline.") public class JTree extends JComponent implements Scrollable, Accessible
階層データのセットをアウトラインとして表示するコントロール。 ツリーに関するタスク指向のドキュメントと使用例については、「The Java Tutorial」の「How to Use Trees」を参照してください。

ツリーの特定のノードは、ノードおよびすべての上位ノードをカプセル化するオブジェクトであるTreePath、または表示領域の各行が1つのノードを表示する表示行により識別されます。 展開されたノードは、葉以外のノード(TreeModel.isLeaf(node)がfalseを返すことで識別される)であり、そのすべての上位ノードが展開されたときに子を表示します。 折りたたまれたノードは子を隠します。 隠されたノードは折りたたまれた親の下にあります。 すべての表示可能ノードの親は展開されますが、表示される場合とされない場合があります。 表示ノードは表示可能であり、表示領域にあります。

次のJTreeメソッドは「visible」を使用して「displayed」を表します。
  • isRootVisible()
  • setRootVisible()
  • scrollPathToVisible()
  • scrollRowToVisible()
  • getVisibleRowCount()
  • setVisibleRowCount()
JTreeの次のメソッドは「visible」を使用して「viewable」を表します(展開された親の下)。
  • isVisible()
  • makeVisible()
いつ選択が変更されたかを知りたい場合は、TreeSelectionListenerインタフェースを実装し、addTreeSelectionListenerメソッドを使用してそのインスタンスを追加します。valueChangedは、選択が変更されたときに呼び出されます。つまり、ユーザーが同じノードを2回クリックしたときにvalueChangedは一度だけ呼び出されます。

ノードが選択されていたかどうかにかかわらず、ダブルクリック・イベントまたはユーザーがいつノードをクリックしたかを知りたい場合は、次のようにします。

 final JTree tree = ...;

 MouseListener ml = new MouseAdapter() {
     public void mousePressed(MouseEvent e) {
         int selRow = tree.getRowForLocation(e.getX(), e.getY());
         TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
         if(selRow != -1) {
             if(e.getClickCount() == 1) {
                 mySingleClick(selRow, selPath);
             }
             else if(e.getClickCount() == 2) {
                 myDoubleClick(selRow, selPath);
             }
         }
     }
 };
 tree.addMouseListener(ml);
 
ノート: この例はパスと行の両方を取得しますが、必要なほうだけを取得してください。

JTreeを使用して複合ノード(たとえば、グラフィック・アイコンとテキストの両方を持つノード)を表示するには、TreeCellRendererをサブクラス化し、setCellRenderer(javax.swing.tree.TreeCellRenderer)を使用してツリーにそれを使用することを指示します。 そのようなノードを編集するには、TreeCellEditorをサブクラス化し、setCellEditor(javax.swing.tree.TreeCellEditor)を使用します。

すべてのJComponentクラスと同様に、InputMapActionMapを使用してActionオブジェクトとKeyStrokeを関連付け、指定した条件でアクションを実行できます。

警告: Swingはスレッドに対して安全ではありません。 詳細は、「Swing's Threading Policy」を参照してください。

警告: このクラスの直列化されたオブジェクトは、今後のSwingリリースと互換ではなくなる予定です。 現在の直列化のサポートは、短期間の格納や、同じバージョンのSwingを実行するアプリケーション間のRMIに適しています。 1.4では、すべてのJavaBeansの長期ストレージのサポートがjava.beansパッケージに追加されました。 XMLEncoderを参照してください。

導入されたバージョン:
1.2