java - JTree select node by clicking anywhere on the row -


i have code taken here allow selection of jtree row clicking anywhere on row. works fine in single row selection mode. however, not sure how modify in order handle multiple row selections. how distinguish case when user make multiple selection(eg. holding down shift or control button while making left mouse click on row)?

 import java.awt.rectangle; import java.awt.event.mouseadapter; import java.awt.event.mouseevent; import java.awt.event.mouselistener;  import javax.swing.jframe; import javax.swing.jtree; import javax.swing.swingutilities; import javax.swing.tree.defaultmutabletreenode; import javax.swing.tree.treenode;   @suppresswarnings("serial") public class navtree extends jtree {      private boolean                 fwholerowselectionenabled;     private mouselistener           frowselectionlistener;     final navtree                   fthis;      public navtree(treenode rootnode) {         super(rootnode);         fthis = this;         init();     }     public navtree() {         fthis = this;         init();     }      private void init() {         //setcellrenderer(new navtreecellrenderer());         frowselectionlistener = new mouseadapter() {              public void mousepressed(mouseevent e) {                 if (swingutilities.isleftmousebutton(e)) {                     int closestrow = fthis.getclosestrowforlocation(                             e.getx(), e.gety());                     rectangle closestrowbounds = fthis.getrowbounds(closestrow);                     if(e.gety() >= closestrowbounds.gety() &&                              e.gety() < closestrowbounds.gety() +                              closestrowbounds.getheight()) {                         if(e.getx() > closestrowbounds.getx() &&                                  closestrow < fthis.getrowcount()){                                                      fthis.setselectionrow(closestrow);                                                 }                      } else                         fthis.setselectionrow(-1);                 }             }          };         setwholerowselectionenabled(true);     }      public void setwholerowselectionenabled(boolean wholerowselectionenabled) {         fwholerowselectionenabled = wholerowselectionenabled;         if (fwholerowselectionenabled)             addmouselistener(frowselectionlistener);         else             removemouselistener(frowselectionlistener);     }      public boolean iswholerowselectionenabled() {         return fwholerowselectionenabled;     }      public static void main(string[] args) {         jframe frame = new jframe();         defaultmutabletreenode root = new defaultmutabletreenode("root");         root.add(new defaultmutabletreenode("child 1"));         root.add(new defaultmutabletreenode("child 2"));         root.add(new defaultmutabletreenode("child 3"));         navtree tree = new navtree(root);         frame.add(tree);         frame.setsize(200, 300);         frame.setvisible(true);     } } 

use modifier key information of mouseevent. see mouseevent#getmodifiersex more information


Comments

Popular posts from this blog

jquery - Invalid Assignment Left-Hand Side -

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -