package com.wsy.JComPz;
import java.awt.Component;
import java.util.Calendar;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeCellRenderer;
public class LeafIconTest {
private JFrame jf = null;
/**
* @param args
*/
public static void main(String[] args) {
LeafIconTest lit = new LeafIconTest();
lit.test();
}
private void test() {
jf.show();
}
public LeafIconTest() {
super();
jf = new JFrame("Leaf Icon Test");
jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
jf.setSize(200, 300);
jf.getContentPane().add(getJTree());
}
private Component getJTree() {
JTree jt = new JTree();
jt.setCellRenderer(new DefaultTreeCellRenderer() {
public Component getTreeCellRendererComponent(JTree tree,
Object value, boolean sel, boolean expanded, boolean leaf,
int row, boolean hasFocus) {
System.out.println("[DEBUG] "
+ Calendar.getInstance().getTime().toGMTString()
+ " getLeafIcon invoked");
super.getTreeCellRendererComponent(tree, value, sel, expanded,
leaf, row, hasFocus);
if (leaf) {
setIcon(getLengthIcon(value));
}
return this;
}
});
return jt;
}
protected Icon getLengthIcon(Object value) {
ImageIcon ii;
// We use the length of the string representation of the node to
// determine the icon.
// In real world, we need to determine this by the
// 'male | female' attribute of the tree node, which can be extracted
// from the parameter 'value'
int length = value.toString().length();
if (length == 5 || length == 3) {
ii = new ImageIcon("e:/model.png");
} else {
ii = new ImageIcon("e:/model.png");
}
System.out.println(value.toString());
return ii;
}
}
分享到:
相关推荐
例如,在已经添加的节点中不能更改其文本信息和图片信息,而且所有的叶子节点的图片都是通过 DefaultTreeCellRenderer 的方法 setLeafIcon() 来实现的,这点在实际的软件开发中是一个致命的漏洞。 为了解决这个问题...
- **图标支持**: 每个节点可以关联一个图标,表示其状态,如打开、关闭、叶子节点等。 - **键盘导航**: 用户可以通过键盘进行导航和操作,如使用`Space`键展开/折叠节点,`Arrow`键移动焦点。 ### 3. JTree的使用...
// 自定义叶子节点的图标 setIcon(leafIcon); } else if (expanded) { // 自定义展开节点的图标 setIcon(openIcon); } else { // 自定义未展开节点的图标 setIcon(closeIcon); } return c; } }); ``` ...
// 设置叶子节点不采用图标 treeCellRenderer.setClosedIcon(null);// 设置节点折叠时不采用图标 treeCellRenderer.setOpenIcon(null);// 设置节点展开时不采用图标 Enumeration<?> enumeration; // 按...
6. **Icons**:可以通过设置图标来美化`JTree`,例如,可以为展开的节点、未展开的节点、叶子节点设置不同的图标。 7. **Rendering**:`JTree`使用`TreeCellRenderer`来决定如何显示每个节点,包括文本颜色、字体、...
leafIcon: 'fa fa-file' // 叶子节点图标 } }); ``` - **操作JTree**:通过提供的API进行节点的操作,例如添加、删除、更新节点。 ```javascript // 添加节点 tree.addNode({ text: '新节点', parent: '节点1' }...
- `isExpanded(int row)` 和 `isLeaf(int row)` 分别检查节点是否展开和是否为叶子节点。 6. **数据绑定**: - JTree可以与JavaBeans或其他数据源绑定,通过`Binding`机制实现数据的动态更新。 7. **性能优化**...
Java Swing 中的 JTree 是一个用于展示层次结构数据的组件,它使用类似文件系统目录的图形界面,由一系列节点组成,这些节点可以是文件夹或叶子节点。文件夹节点可以有子节点,而叶子节点没有。JTree 依赖于一个模型...
TreeNode类可以代表一个叶子节点(没有子节点)或一个分支节点(有子节点)。你可以根据需要创建自定义的TreeModel来适应特定的数据结构。 其次,**事件处理**是JTree交互性的关键。JTree提供了多种事件监听器,如...
//设置叶子节点图标为空 renderer.setClosedIcon(null); //设置关闭节点的图标为空 renderer.setOpenIcon(null); //设置打开节点的图标为空 tree.addTreeSelectionListener(new TreeSelectionListener() {//...
//设置叶子节点图标为空 renderer.setClosedIcon(null); //设置关闭节点的图标为空 renderer.setOpenIcon(null); //设置打开节点的图标为空 tree.addTreeSelectionListener(new ...
此外,DefaultMutableTreeNode还提供了isLeaf()方法来判断节点是否为叶子节点。 3. **TreeModel接口**: TreeModel是树数据模型的接口,定义了树结构如何被访问和修改。Swing中的JTree组件使用这个接口来获取和...
禁用节点可以是叶子节点(无子节点)或非叶子节点(有子节点)。 8. **仅文本节点**: `OnlyTextTreeExample.java`则专注于仅显示文本的节点,没有图标或其他视觉装饰,简化了界面,使其更加专注和清晰。 9. **...
4. **图标**:JTree可以为不同状态的节点设置不同的图标,比如展开、折叠、叶子节点等,通过设置CellRenderer来定制节点的外观。 5. **事件处理**:当用户与JTree交互时,会触发相应的事件,如TreeSelectionEvent。...
实例中,通过设置不同的图标来区分展开、折叠和叶子节点,同时可以设置背景颜色和选中颜色。 6. **事件监听**: 实例中使用了`ActionListener`来处理按钮点击事件。`addSiblingButton`、`addChildButton`和`delete...
- `setLeafIcon(ImageIcon icon)`:设置叶子节点的图标。 - `setTextSelectionColor(Color color)`:设置选中时文本的颜色。 - `setFont(Font font)`:设置字体。 6. **TreeSelectionListener:** - **用途**:...
每个节点代表一个项目,可以包含子节点或叶子节点(没有子节点的项)。用户可以通过点击加号(+)或减号(-)图标来展开或折叠节点,从而查看或隐藏子级内容。这种交互方式使用户能够快速浏览和访问大量信息,尤其...
树形控件(Tree Control)是一种控件元素,它以层级结构显示数据,每个层级称为一个节点,节点可以包含子节点或叶子节点。通常,根节点位于顶部,而叶子节点没有子节点。用户可以通过展开和折叠节点来查看或隐藏子...