-
Bug
-
Resolution: Duplicate
-
P3
-
None
-
1.2.0
-
x86
-
windows_nt
When you run the following you will see the duplicated JLable text. It's not readible because of that.
When you comment out paint method, it looks fine.
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();
}
}
When you comment out paint method, it looks fine.
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();
}
}
- duplicates
-
JDK-4102472 Disappear one or more tree-node when I click a node in the attached test suite
- Closed
- relates to
-
JDK-4102486 A JComponent is not redrawing correctly when dragging other window over the tree
- Closed
-
JDK-4102497 When expand JLabel children nodes it does not look good
- Closed