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

A JComponent is not redrawing correctly when dragging other window over the tree

XMLWordPrintable

      I created my tree cell renderer and dragging another window over the tree will result in in redrawing partially, or not at all etc.

      To reproduce:
      1) Save the code and name it PaintTest.java
      2) Compile and run it.
      3) Expand all children nodes.
      4) Drag other window over the tree several times.

      You will see the updating problem. It's not restored.



      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: