Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.Dimension;
- import java.awt.Graphics;
- import javax.swing.Icon;
- import javax.swing.JToggleButton;
- import javax.swing.JTree;
- import javax.swing.tree.DefaultMutableTreeNode;
- import javax.swing.tree.DefaultTreeCellRenderer;
- import javax.swing.tree.DefaultTreeModel;
- /**
- *
- * @author remi
- */
- public class JExpander extends JToggleButton {
- // public static void main(String[] args) {
- // try {
- // UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
- // } catch (Exception e) {
- // Logger.getAnonymousLogger().log(Level.SEVERE, null, e);
- // }
- // JFrame f = new JFrame();
- // f.setLayout(new BorderLayout());
- // f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
- //
- // JExpander e = new JExpander();
- // e.setText("bla");
- //
- // f.add(e, BorderLayout.CENTER);
- // f.pack();
- //
- // f.setVisible(true);
- // }
- // <editor-fold defaultstate="collapsed" desc="tree renderer">
- private final DefaultMutableTreeNode node = new DefaultMutableTreeNode(null, true);
- private final DefaultTreeModel treeModel = new DefaultTreeModel(node);
- private final JTree tree = new JTree(treeModel);
- private static class TreeCellRendererImpl extends DefaultTreeCellRenderer {
- @Override
- public Icon getIcon() {
- return null;
- }
- }
- {
- tree.setRootVisible(true);
- tree.setShowsRootHandles(true);
- tree.setCellRenderer(new TreeCellRendererImpl());
- }
- // </editor-fold>
- @Override
- protected void paintComponent(Graphics g) {
- DefaultMutableTreeNode child = new DefaultMutableTreeNode();
- node.setUserObject(getText());
- node.add(child);
- treeModel.nodeStructureChanged(node);
- tree.setBounds(getBounds());
- if (isSelected()) {
- tree.expandRow(0);
- } else {
- tree.collapseRow(0);
- }
- tree.paint(g);
- node.remove(child);
- }
- @Override
- public Dimension getPreferredSize() {
- node.setUserObject(getText());
- treeModel.nodeStructureChanged(node);
- Dimension s = tree.getPreferredSize();
- s.height += 6;
- return s;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement