Swing/TraverseAllNodes のバックアップ差分(No.11)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/TraverseAllNodes へ行く。
- 1 (2012-01-17 (火) 13:52:52)
- 2 (2012-12-13 (木) 15:49:47)
- 3 (2014-12-09 (火) 21:08:36)
- 4 (2016-03-02 (水) 13:39:54)
- 5 (2017-04-07 (金) 13:48:21)
- 6 (2018-03-22 (木) 14:11:56)
- 7 (2018-03-30 (金) 16:28:21)
- 8 (2018-03-30 (金) 19:17:21)
- 9 (2020-03-22 (日) 01:47:43)
- 10 (2021-09-30 (木) 09:44:20)
- 11 (2022-08-20 (土) 22:15:25)
- 追加された行はこの色です。
- 削除された行はこの色です。
--- category: swing folder: TraverseAllNodes title: JTreeのノードを走査する tags: [JTree, Enumeration, TreeModel, DefaultMutableTreeNode] author: aterai pubdate: 2012-01-16T15:35:56+09:00 description: JTreeのノードからEnumerationを取得してサブツリーの走査を行います。 image: https://lh5.googleusercontent.com/-m8cdaUCibl0/TxPCZQMYqkI/AAAAAAAABH4/eAK9LyYkv14/s800/TraverseAllNodes.png --- * 概要 [#summary] `JTree`のノードから`Enumeration`を取得してサブツリーの走査を行います。 #download(https://lh5.googleusercontent.com/-m8cdaUCibl0/TxPCZQMYqkI/AAAAAAAABH4/eAK9LyYkv14/s800/TraverseAllNodes.png) * サンプルコード [#sourcecode] #code(link){{ TreeModel model = tree.getModel(); DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot(); Enumeration<?> e = root.breadthFirstEnumeration(); while (e.hasMoreElements()) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) e.nextElement(); textArea.append(node.toString() + "\n"); } }} * 解説 [#explanation] 上記のサンプルでは、この`JTree`の最上位ノードをルートにするサブツリー以下を、深さ優先、幅優先などで全走査しています。 - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/tree/DefaultMutableTreeNode.html#depthFirstEnumeration-- DefaultMutableTreeNode#depthFirstEnumeration()] -- 深さ優先走査 -- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/tree/DefaultMutableTreeNode.html#postorderEnumeration-- DefaultMutableTreeNode#postorderEnumeration()]の後順走査と同一 -- `blue, violet, red, yellow, colors, basketball, ... , JTree` - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/tree/DefaultMutableTreeNode.html#breadthFirstEnumeration-- DefaultMutableTreeNode#breadthFirstEnumeration()] -- 幅優先走査 -- `JTree, colors, sports, food, blue, violet, red, ...` - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/tree/DefaultMutableTreeNode.html#preorderEnumeration-- DefaultMutableTreeNode#preorderEnumeration()] -- 前順走査 -- `JTree, colors, blue, violet, red, yellow, sports, basketball, soccer, ...` ---- - `DefaultMutableTreeNode#children()`や`DefaultMutableTreeNode#xxxxxEnumeration()`などの戻り値は`Java 8 ~ 9`で以下のように変更される - `DefaultMutableTreeNode#children()`や`DefaultMutableTreeNode#xxxxxEnumeration()`などの戻り値は`Java 8`から`9`で以下のように変更される -- `Java 8`: `Enumeration` -- `Java 9`: `Enumeration<TreeNode>` --- [https://bugs.openjdk.java.net/browse/JDK-8043550 JDK-8043550 Fix raw and unchecked lint warnings in javax.swing.* - Java Bug System] -- %%`Java 11`: `Enumeration<? extends TreeNode>`%% --- %%[https://bugs.openjdk.java.net/browse/JDK-8058831 JDK-8058831 Consider changing return type of DefaultMutableTreeNode.children - Java Bug System]%% * 参考リンク [#reference] - [[JTreeのノードを検索する>Swing/SearchBox]] * コメント [#comment] #comment #comment