-
Bug
-
Resolution: Cannot Reproduce
-
P3
-
None
-
1.2.0
-
x86
-
windows_nt
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();
}
}
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();
}
}
- relates to
-
JDK-4102472 Disappear one or more tree-node when I click a node in the attached test suite
- Closed
-
JDK-4102506 Duplicated label text on the attached test suite
- Closed