Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.12 KB | None | 0 0
  1. import java.awt.Dimension;
  2. import java.awt.Graphics;
  3. import javax.swing.Icon;
  4. import javax.swing.JToggleButton;
  5. import javax.swing.JTree;
  6. import javax.swing.tree.DefaultMutableTreeNode;
  7. import javax.swing.tree.DefaultTreeCellRenderer;
  8. import javax.swing.tree.DefaultTreeModel;
  9.  
  10. /**
  11.  *
  12.  * @author remi
  13.  */
  14. public class JExpander extends JToggleButton {
  15.  
  16. //  public static void main(String[] args) {
  17. //    try {
  18. //      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  19. //    } catch (Exception e) {
  20. //      Logger.getAnonymousLogger().log(Level.SEVERE, null, e);
  21. //    }
  22. //    JFrame f = new JFrame();
  23. //    f.setLayout(new BorderLayout());
  24. //    f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
  25. //
  26. //    JExpander e = new JExpander();
  27. //    e.setText("bla");
  28. //
  29. //    f.add(e, BorderLayout.CENTER);
  30. //    f.pack();
  31. //
  32. //    f.setVisible(true);
  33. //  }
  34.  
  35.   // <editor-fold defaultstate="collapsed" desc="tree renderer">
  36.   private final DefaultMutableTreeNode node = new DefaultMutableTreeNode(null, true);
  37.  
  38.   private final DefaultTreeModel treeModel = new DefaultTreeModel(node);
  39.  
  40.   private final JTree tree = new JTree(treeModel);
  41.  
  42.   private static class TreeCellRendererImpl extends DefaultTreeCellRenderer {
  43.  
  44.     @Override
  45.     public Icon getIcon() {
  46.       return null;
  47.     }
  48.   }
  49.  
  50.   {
  51.     tree.setRootVisible(true);
  52.     tree.setShowsRootHandles(true);
  53.     tree.setCellRenderer(new TreeCellRendererImpl());
  54.   }
  55.   // </editor-fold>
  56.  
  57.   @Override
  58.   protected void paintComponent(Graphics g) {
  59.  
  60.     DefaultMutableTreeNode child = new DefaultMutableTreeNode();
  61.     node.setUserObject(getText());
  62.     node.add(child);
  63.     treeModel.nodeStructureChanged(node);
  64.  
  65.     tree.setBounds(getBounds());
  66.  
  67.     if (isSelected()) {
  68.       tree.expandRow(0);
  69.     } else {
  70.       tree.collapseRow(0);
  71.     }
  72.  
  73.     tree.paint(g);
  74.  
  75.     node.remove(child);
  76.   }
  77.  
  78.   @Override
  79.   public Dimension getPreferredSize() {
  80.     node.setUserObject(getText());
  81.     treeModel.nodeStructureChanged(node);
  82.  
  83.     Dimension s = tree.getPreferredSize();
  84.  
  85.     s.height += 6;
  86.  
  87.     return s;
  88.   }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement