Advertisement
Guest User

JTree Focus Test

a guest
May 19th, 2013
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.99 KB | None | 0 0
  1. import java.awt.Dimension;
  2. import java.awt.event.FocusEvent;
  3. import java.awt.event.FocusListener;
  4.  
  5. import javax.swing.Box;
  6. import javax.swing.BoxLayout;
  7. import javax.swing.JFrame;
  8. import javax.swing.JPanel;
  9. import javax.swing.JTextField;
  10. import javax.swing.JTree;
  11. import javax.swing.event.TreeSelectionEvent;
  12. import javax.swing.event.TreeSelectionListener;
  13. import javax.swing.tree.DefaultMutableTreeNode;
  14. import javax.swing.tree.DefaultTreeModel;
  15. import javax.swing.tree.TreeSelectionModel;
  16.  
  17. public class JTreeFocusTest extends JFrame{
  18.     private static final long serialVersionUID = 1L;
  19.     public JTreeFocusTest() {
  20.         super("JTree Focus Test");
  21.         JPanel panel = new JPanel(true);
  22.         panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
  23.         MyTree tree = new MyTree();
  24.         panel.add(tree);
  25.         panel.add(Box.createVerticalStrut(20));
  26.         panel.add(new MyTextField(tree));
  27.         panel.add(Box.createVerticalStrut(20));
  28.         panel.add(new JTextField(30));
  29.         getContentPane().add(panel);
  30.         setVisible(true);
  31.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  32.         pack();
  33.     }
  34.    
  35.     public static void main(String[] args){
  36.         new JTreeFocusTest();
  37.     }
  38. }
  39.  
  40. class MyTree extends JTree{
  41.     private static final long serialVersionUID = 1L;
  42.     public MyTree() {
  43.         DefaultMutableTreeNode root = new DefaultMutableTreeNode(new MyNode("Root", "Root"));
  44.         DefaultMutableTreeNode child1 = new DefaultMutableTreeNode(new MyNode("Child 1", "DOC122122"));
  45.         root.add(child1);
  46.         DefaultMutableTreeNode child2 = new DefaultMutableTreeNode(new MyNode("Child 2", "DOC134342"));
  47.         root.add(child2);
  48.         DefaultTreeModel model = new DefaultTreeModel(root, true);
  49.         setModel(model);
  50.         getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
  51.         setSelectionPath(getPathForRow(0));
  52.     }
  53. }
  54.  
  55. class MyTextField extends JTextField implements FocusListener, TreeSelectionListener{
  56.     private static final long serialVersionUID = 1L;
  57.     private MyTree tree;
  58.     public MyTextField(MyTree tree) {
  59.         this.tree = tree;
  60.         setText("Some");
  61.         addFocusListener(this);
  62.         this.tree.addTreeSelectionListener(this);
  63.         Dimension dim = new Dimension(200, 20);
  64.         setPreferredSize(dim);
  65.         setMaximumSize(dim);
  66.         setMinimumSize(dim);
  67.     }
  68.     @Override
  69.     public void focusGained(FocusEvent e) {System.out.println("TextField gained focus");}
  70.     @Override
  71.     public void focusLost(FocusEvent e) {
  72.         getSelectedNodeUserObj().setValue(getText());
  73.     }
  74.     @Override
  75.     public void valueChanged(TreeSelectionEvent e) {
  76.         setText(getSelectedNodeUserObj().getValue());
  77.     }
  78.     private MyNode getSelectedNodeUserObj(){
  79.         return ((MyNode)((DefaultMutableTreeNode)this.tree.getSelectionPath().getLastPathComponent()).getUserObject());
  80.     }
  81. }
  82.  
  83. class MyNode{
  84.     private String label = "";
  85.     private String value = "";
  86.    
  87.     public MyNode(String label, String value) {
  88.         this.label = label;
  89.         this.value = value;
  90.     }
  91.     public void setValue(String value){
  92.         this.value = value;
  93.     }
  94.     public String getValue(){
  95.         return value;
  96.     }
  97.     public String toString(){
  98.         return label;
  99.     }  
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement