How to allow contigous selection of nodes in a JTree?

Contigous selection means sharing borders like selecting siblings of a node in a JTree. To allow contiguous selection of nodes, set the selection mode to CONTIGUOUS_TREE_SELECTION −

tree.getSelectionModel().setSelectionMode(TreeSelectionModel.CONTIGUOUS_TREE_SELECTION);

The following is an example to allow contigous selection of nodes in a JTree −

Example

<span class="kwd">package</span><span class="pln"> </span><span class="kwd">my</span><span class="pun">;</span>
<span class="kwd">import</span><span class="pln"> javax</span><span class="pun">.</span><span class="pln">swing</span><span class="pun">.</span><span class="typ">JFrame</span><span class="pun">;</span>
<span class="kwd">import</span><span class="pln"> javax</span><span class="pun">.</span><span class="pln">swing</span><span class="pun">.</span><span class="typ">JTree</span><span class="pun">;</span>
<span class="kwd">import</span><span class="pln"> javax</span><span class="pun">.</span><span class="pln">swing</span><span class="pun">.</span><span class="pln">tree</span><span class="pun">.</span><span class="typ">DefaultMutableTreeNode</span><span class="pun">;</span>
<span class="kwd">import</span><span class="pln"> javax</span><span class="pun">.</span><span class="pln">swing</span><span class="pun">.</span><span class="pln">tree</span><span class="pun">.</span><span class="typ">TreeSelectionModel</span><span class="pun">;</span>
<span class="kwd">public</span><span class="pln"> </span><span class="kwd">class</span><span class="pln"> </span><span class="typ">SwingDemo</span><span class="pln"> </span><span class="pun">{</span>
<span class="kwd">   public</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> main</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> args</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">throws</span><span class="pln"> </span><span class="typ">Exception</span><span class="pln"> </span><span class="pun">{</span>
<span class="typ">      JFrame</span><span class="pln"> frame </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">JFrame</span><span class="pun">(</span><span class="str">"Demo"</span><span class="pun">);</span>
<span class="typ">      DefaultMutableTreeNode</span><span class="pln"> node </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DefaultMutableTreeNode</span><span class="pun">(</span><span class="str">"Products"</span><span class="pun">);</span>
<span class="typ">      DefaultMutableTreeNode</span><span class="pln"> node1 </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DefaultMutableTreeNode</span><span class="pun">(</span><span class="str">"Clothing"</span><span class="pun">);</span>
<span class="typ">      DefaultMutableTreeNode</span><span class="pln"> node2 </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DefaultMutableTreeNode</span><span class="pun">(</span><span class="str">"Electronics"</span><span class="pun">);</span>
<span class="typ">      DefaultMutableTreeNode</span><span class="pln"> node3 </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DefaultMutableTreeNode</span><span class="pun">(</span><span class="str">"Home Decor"</span><span class="pun">);</span>
<span class="typ">      DefaultMutableTreeNode</span><span class="pln"> node4 </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DefaultMutableTreeNode</span><span class="pun">(</span><span class="str">"Furniture"</span><span class="pun">);</span>
<span class="pln">      node</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="pln">node1</span><span class="pun">);</span>
<span class="pln">      node</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="pln">node2</span><span class="pun">);</span>
<span class="pln">      node</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="pln">node3</span><span class="pun">);</span>
<span class="pln">      node</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="pln">node4</span><span class="pun">);</span>
<span class="typ">      DefaultMutableTreeNode</span><span class="pln"> one </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DefaultMutableTreeNode</span><span class="pun">(</span><span class="str">"Shirt"</span><span class="pun">);</span>
<span class="typ">      DefaultMutableTreeNode</span><span class="pln"> two </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DefaultMutableTreeNode</span><span class="pun">(</span><span class="str">"Trousers"</span><span class="pun">);</span>
<span class="typ">      DefaultMutableTreeNode</span><span class="pln"> three </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DefaultMutableTreeNode</span><span class="pun">(</span><span class="str">"Jeans"</span><span class="pun">);</span>
<span class="typ">      DefaultMutableTreeNode</span><span class="pln"> four </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DefaultMutableTreeNode</span><span class="pun">(</span><span class="str">"Mobiles"</span><span class="pun">);</span>
<span class="typ">      DefaultMutableTreeNode</span><span class="pln"> five </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DefaultMutableTreeNode</span><span class="pun">(</span><span class="str">"Camera"</span><span class="pun">);</span>
<span class="typ">      DefaultMutableTreeNode</span><span class="pln"> six </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DefaultMutableTreeNode</span><span class="pun">(</span><span class="str">"Tablet"</span><span class="pun">);</span>
<span class="typ">      DefaultMutableTreeNode</span><span class="pln"> seven </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DefaultMutableTreeNode</span><span class="pun">(</span><span class="str">"Paintings"</span><span class="pun">);</span>
<span class="typ">      DefaultMutableTreeNode</span><span class="pln"> eight </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DefaultMutableTreeNode</span><span class="pun">(</span><span class="str">"Showpieces"</span><span class="pun">);</span>
<span class="typ">      DefaultMutableTreeNode</span><span class="pln"> nine </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DefaultMutableTreeNode</span><span class="pun">(</span><span class="str">"Wardrobes"</span><span class="pun">);</span>
<span class="typ">      DefaultMutableTreeNode</span><span class="pln"> ten </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DefaultMutableTreeNode</span><span class="pun">(</span><span class="str">"Bean Bags"</span><span class="pun">);</span>
<span class="pln">      node1</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="pln">one</span><span class="pun">);</span>
<span class="pln">      node1</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="pln">two</span><span class="pun">);</span>
<span class="pln">      node1</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="pln">three</span><span class="pun">);</span>
<span class="pln">      node2</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="pln">four</span><span class="pun">);</span>
<span class="pln">      node2</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="pln">five</span><span class="pun">);</span>
<span class="pln">      node2</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="pln">six</span><span class="pun">);</span>
<span class="pln">      node3</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="pln">seven</span><span class="pun">);</span>
<span class="pln">      node3</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="pln">eight</span><span class="pun">);</span>
<span class="pln">      node4</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="pln">nine</span><span class="pun">);</span>
<span class="pln">      node4</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="pln">ten</span><span class="pun">);</span>
<span class="typ">      JTree</span><span class="pln"> tree </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">JTree</span><span class="pun">(</span><span class="pln">node</span><span class="pun">);</span>
<span class="kwd">      for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> tree</span><span class="pun">.</span><span class="pln">getRowCount</span><span class="pun">();</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span>
<span class="pln">         tree</span><span class="pun">.</span><span class="pln">expandRow</span><span class="pun">(</span><span class="pln">i</span><span class="pun">);</span>
<span class="pun">      }</span>
<span class="pln">      tree</span><span class="pun">.</span><span class="pln">putClientProperty</span><span class="pun">(</span><span class="str">"JTree.lineStyle"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Angled"</span><span class="pun">);</span>
<span class="pln">      tree</span><span class="pun">.</span><span class="pln">getSelectionModel</span><span class="pun">().</span><span class="pln">setSelectionMode</span><span class="pun">(</span><span class="typ">TreeSelectionModel</span><span class="pun">.</span><span class="pln">CONTIGUOUS_TREE_SELECTION</span><span class="pun">);</span>
<span class="pln">      tree</span><span class="pun">.</span><span class="pln">setRowHeight</span><span class="pun">(</span><span class="lit">25</span><span class="pun">);</span>
<span class="pln">      frame</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="pln">tree</span><span class="pun">);</span>
<span class="pln">      frame</span><span class="pun">.</span><span class="pln">setSize</span><span class="pun">(</span><span class="lit">600</span><span class="pun">,</span><span class="lit">450</span><span class="pun">);</span>
<span class="pln">      frame</span><span class="pun">.</span><span class="pln">setVisible</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span>
<span class="pun">   }</span>
<span class="pun">}</span>

Output

Updated on: 2019-07-30T22:30:26+05:30

236 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements