Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4102497

When expand JLabel children nodes it does not look good

XMLWordPrintable

      I created my tree cell renderer which has one JLabel. When I expand a parent node it shows children nodes with center alignment. As a result of that, it doesnot look good. If label text is very long it begins left of the tree-vertical line.

      To reproduce:
      1) Save the code to PaintTest.java
      2) Compile and Run.
      3) Expand TOP:Classical:Beethoven:Quartets
      4) 3 children nodes doesnot look good.



      import java.awt.swing.*;
      import java.awt.swing.tree.*;
      import java.awt.*;

      class MyTreeCellRenderer extends JPanel implements TreeCellRenderer
      {
          JLabel alabel = new JLabel("a label");

          public MyTreeCellRenderer(){
              super(false);
              setLayout(new FlowLayout());
              setBackground(Color.white);

              add(alabel);
          }

          /*
          public void paint(Graphics g){
              super.paint(g);
             alabel.paint(g);
          }*/

          public Component getTreeCellRendererComponent(JTree tree,
                                                        Object value,
                                                        boolean selected,
                                                        boolean expanded,
                                                        boolean leaf,
                                                        int row,
                                                        boolean hasFocus){

              DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;
              alabel.setText((String)(node.getUserObject()));

              return this;
          }
      }

      public class PaintTest extends JFrame
      {
          JTree tree = null;
          MyTreeCellRenderer renderer = null;

          public PaintTest(){
              DefaultMutableTreeNode top = new DefaultMutableTreeNode("TOP");
              DefaultMutableTreeNode catagory;
              DefaultMutableTreeNode composer;
              DefaultMutableTreeNode style;

              // Classical
              catagory = new DefaultMutableTreeNode("Classical");
              top.add(catagory);

      // Beethoven
      catagory.add(composer = new DefaultMutableTreeNode("Beethoven"));
      composer.add(style = new DefaultMutableTreeNode("Concertos"));
      style.add(new DefaultMutableTreeNode("No. 1 - C Major"));
      style.add(new DefaultMutableTreeNode("No. 2 - B-Flat Major"));

      composer.add(style = new DefaultMutableTreeNode("Quartets"));
      style.add(new DefaultMutableTreeNode("Six String Quartets"));
      style.add(new DefaultMutableTreeNode("Three String Quartets"));
      style.add(new DefaultMutableTreeNode("Grosse Fugue for String Quartets"));

      // Mozart
      catagory.add(composer = new DefaultMutableTreeNode("Mozart"));
      composer.add(style = new DefaultMutableTreeNode("Concertos"));
      style.add(new DefaultMutableTreeNode("Piano Concerto No. 12"));
      style.add(new DefaultMutableTreeNode("Piano Concerto No. 17"));


              renderer = new MyTreeCellRenderer();
              tree = new JTree(top);
              tree.setCellRenderer(renderer);

              getContentPane().add(tree);
              setSize(300,300);
              show();
          }


          public static void main(String[] args){
              new PaintTest();
          }
      }

            sswingtrsunw Swingtraq Swingtraq (Inactive)
            bkimsunw Bae-chul Kim (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: