jtree
来源:互联网 发布:网络大电影广告植入 编辑:程序博客网 时间:2024/05/01 00:32
基本上要改变树的节点的显示方式就是实现TreeCellRenderer,如果要改变编辑的方式就要实现 TreeCellEditor,实现方法和TreeCellRenderer非常相似.
public class TagCheckRenderer extends JCheckBox implements TreeCellRenderer{
public Component getTreeCellRendererComponent(JTree tree,
Object value,
boolean selected,
boolean expanded,
boolean leaf,
int row,
boolean hasFocus){
String stringValue = tree.convertValueToText(value, selected,
expanded, leaf, row, hasFocus);
TagCheckNode node = (TagCheckNode)value;
if(!node.isEditable()){
JLabel label = new JLabel(stringValue);
label.setComponentOrientation(tree.getComponentOrientation());
if(hasFocus||node.isSelected()){
label.setBackground(UIManager.getColor("Tree.selectionBackground");
}
else{
label.setBackground(tree.getBackground());
}
return label;
}
this.setText(stringValue);
if(!leaf){
this.setEnabled(false);
this.setSelected(false);
TagCheckNode child = null;
//只要有一个叶子子节点Tag被选中,该节点就为被选中的状态
for(Enumeration enum = node.children(); enum.hasMoreElements() {
child = (TagCheckNode)enum.nextElement();
if(child.isLeaf()&&child.isSelected()){
this.setSelected(true);
break;
}
}
}
else{
this.setSelected(node.isSelected());
this.setEnabled(tree.isEnabled());
}
if(hasFocus){
this.setBackground(UIManager.getColor("Tree.selectionBackground");
}
else{
this.setBackground(tree.getBackground());
}
this.setComponentOrientation(tree.getComponentOrientation());
return this;
}
}
public class TagCheckRenderer extends JCheckBox implements TreeCellRenderer{
public Component getTreeCellRendererComponent(JTree tree,
Object value,
boolean selected,
boolean expanded,
boolean leaf,
int row,
boolean hasFocus){
String stringValue = tree.convertValueToText(value, selected,
expanded, leaf, row, hasFocus);
TagCheckNode node = (TagCheckNode)value;
if(!node.isEditable()){
JLabel label = new JLabel(stringValue);
label.setComponentOrientation(tree.getComponentOrientation());
if(hasFocus||node.isSelected()){
label.setBackground(UIManager.getColor("Tree.selectionBackground");
}
else{
label.setBackground(tree.getBackground());
}
return label;
}
this.setText(stringValue);
if(!leaf){
this.setEnabled(false);
this.setSelected(false);
TagCheckNode child = null;
//只要有一个叶子子节点Tag被选中,该节点就为被选中的状态
for(Enumeration enum = node.children(); enum.hasMoreElements() {
child = (TagCheckNode)enum.nextElement();
if(child.isLeaf()&&child.isSelected()){
this.setSelected(true);
break;
}
}
}
else{
this.setSelected(node.isSelected());
this.setEnabled(tree.isEnabled());
}
if(hasFocus){
this.setBackground(UIManager.getColor("Tree.selectionBackground");
}
else{
this.setBackground(tree.getBackground());
}
this.setComponentOrientation(tree.getComponentOrientation());
return this;
}
}
- jtree
- JTree
- JTree
- JTree
- JTree
- JTree
- JTree
- JTree
- JTree
- JTree
- JTree
- 使用JTree
- jtree问题
- JTree Demo
- Swing JTree
- JTree简介
- JTree刷新
- JTree总结
- 自动备份收藏夹
- python打包之cx_freeze
- EJB的入门教材
- python打包之cx_freeze(windows)
- 实时系统VxWorks下设备驱动程序的编写
- jtree
- Hibernate
- 用AJAX来控制书签和回退按钮
- hello,blog.csdn!
- Send Mail with Asp.net
- Template Method模式
- 从没有一个时代像现在这样:繁荣但却令人不安
- 溢出的原理 (上)
- 目标二,三,四---Home Page Goal