`
helin
  • 浏览: 150653 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JTree 的装饰器演示

    博客分类:
  • java
阅读更多

今天工作中,遇到小问题:想把复选框按钮作为JTree的节点装饰器,没想到,为复选框设置了 icon 后,小方框居然不见了!查看了API,没找到什么好办法,那么,自己动手解决吧:
思路:
用 JPanel 作为节点绘制器,把绘制器上的细节都“装裱”在面板。
先来看效果图

那么接下来读读“绘制装饰器”代码吧:
TreeItem 是自定义对象

final public class MyTreeCellRenderer implements TreeCellRenderer {
    private static final Icon LEFT_ICON = new ImageIcon("left.png");
    private static final Icon NODE_ICON = new ImageIcon("node.png");
    private static final int WIDTH = 10;

    public Component getTreeCellRendererComponent(
            JTree tree, Object value, boolean selected,
            boolean expanded, boolean leaf, int row, boolean hasFocus) {

        if (!(value instanceof DefaultMutableTreeNode)) return new JLabel("???");
        Object obj = ((DefaultMutableTreeNode)value).getUserObject();
        if (!(obj instanceof TreeItem)) return new JLabel("xxx");

        TreeItem item = (TreeItem)obj;
        final JPanel panel = new JPanel(new FlowLayout(0,0,0));
        final Dimension dimension = panel.getSize();
        dimension.width = WIDTH;
        panel.setSize(dimension);
        panel.setToolTipText(item.getDesc());

        final JCheckBox checkBox = new JCheckBox(item.toString(), selected);

        final JLabel iconLabel = new JLabel(leaf? LEFT_ICON : NODE_ICON);        

        panel.add(iconLabel);
        panel.add(checkBox);
        return panel;
    }
}


请注意粗体蓝色代码:要想把工具提示效果显露出来,需要 tree.setToolTipText("@$%");

tree 是JTree 的一个实例,之所以 把提示文本“乱写”,那是因为:如果不在JTree上显示调用 setToolTipText ,那么工具提示文本就不会正常显露,这也许是JDK的一个小缺陷。我用的JDK版本是:
java version "1.5.0_11"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03)
Java HotSpot(TM) Client VM (build 1.5.0_11-b03, mixed mode, sharing)


原文出处:http://hi.baidu.com/hardneedl/blog/item/e6d5a4443214754d500ffeb1.html
分享到:
评论

相关推荐

    如何使用JTree,JTree使用方法

    这个示例演示了如何使用`Hashtable`创建具有层次结构的`JTree`。通过这种方式,可以很容易地构建复杂的树形结构,并根据需要动态添加或修改节点。 #### 总结 通过上述示例,我们可以看到`JTree`的灵活性及其在构建...

    jtree

    4. **应用自定义的渲染器和编辑器:** 最后,将这些自定义组件应用到`JTree`实例上。 ```java JTree tree = new JTree(); tree.setCellRenderer(new CheckboxTreeCellRenderer()); tree.setCellEditor(new ...

    jTree和jTable 双向联动

    实现jTable和jTree的双向联动,点击jTree会选中jTable单元格,点击jTable会选中jTree节点。

    JTree的例子,可以拖动节点

    在`JTree`中实现拖放功能,我们需要利用Java Swing提供的`TransferHandler`类和一些相关的事件监听器。 1. **创建`JTree`实例**: 首先,你需要创建一个`DefaultMutableTreeNode`作为树的数据模型,并将其设置到`...

    JTree

    3. **监听器(Listener)**:`JTree` 支持多种类型的监听器,如 `TreeSelectionListener` 可以监听用户选择的改变,`TreeModelListener` 可以监听模型的变化,`TreeMouseListener` 和 `TreeKeyListener` 分别处理...

    java组件之jtree使用

    接下来,我们将通过两个具体的例子来演示如何使用`JTree`。 ##### 示例1:初始化一个简单的`JTree` 首先展示一个简单的示例代码,用于创建一个空的`JTree`并将其添加到`JFrame`中: ```java import javax.swing.*...

    JAVA JTREE JTABLE实例代码

    这些代码可能涵盖了更复杂的功能,比如自定义渲染器、拖放操作、数据绑定等,学习这些代码可以帮助开发者更好地理解和应用JTree和JTable在实际项目中的各种用法。 总之,JTree和JTable是Java GUI编程中不可或缺的...

    JTree的实现代码

    在IT领域,尤其是在Web开发中,`JTree`是一个常用组件,它用于在用户界面中展示数据的层次结构,比如文件系统、组织架构等。在本案例中,我们讨论的是一个使用JavaScript实现的JTree,这通常是通过HTML、CSS和...

    JTree的Doc文档

    2. **设置默认渲染器**:默认情况下,`JTree`会使用`DefaultTreeCellRenderer`,但你可以自定义渲染器以满足特定需求。 3. **添加监听器**:注册监听器以便在节点被选择、展开或折叠时得到通知,从而执行相应的操作...

    jtree 节点添加图片

    在压缩包文件"Jtree"中,可能包含了用于演示此功能的源代码。确保解压并检查这些文件,以获取更具体的实现细节。此外,你还可以根据需求调整代码,比如通过监听节点选择事件来改变图标,或者根据节点状态动态加载...

    Java JTree+JTable应用

    而`JSplitPane`是一个布局管理器,用于将两个组件(如`JTree`和`JTable`)放置在一个可调整大小的分隔面板中,用户可以根据需要调整两个部分的大小。 在Eclipse环境中,这是一个Maven项目,这意味着它依赖于Maven...

    Jtree

    例如,在一个文件管理器应用中,它可以用来显示硬盘上的目录结构;在软件工程中,它可以展现项目的模块结构;在数据库应用中,它可以呈现表和字段的关系等。JTree的灵活性和可定制性使其成为Java开发中不可或缺的...

    JTree2.0 目录树

    **JTree 2.0:构建直观的目录树视图** `JTree`是Java Swing库中的一个组件,用于在用户界面中展示层次结构数据,通常表现为目录树的形式。在`JTree2.0`版本中,这个组件得到了进一步的改进和增强,提供更丰富的功能...

    文件管理器(Jtree实现)

    这个项目"文件管理器(Jtree实现)"显然旨在创建一个类似Windows操作系统的文件资源管理器,让用户能够浏览、操作文件和目录。在这个实现中,`JTree`将被用来展示文件系统中的目录结构,而不仅仅是简单的数据结构。 ...

    JTree的用法

    ### JTree的用法详解 #### 一、引言 `JTree` 是 Java Swing 库中的一个重要组件,用于在图形用户界面 (GUI) 中显示层次结构数据。它非常适合用来展示具有分层关系的信息,例如文件系统目录结构、组织结构等。 ####...

    (一)如何使用JTree

    为了响应用户的交互,比如点击或展开/折叠节点,我们可以为JTree添加事件监听器,如TreeSelectionListener和TreeWillExpandListener: ```java jTree.addTreeSelectionListener(new TreeSelectionListener() { ...

    JTree用法大全 swing java

    ### JTree用法详解:...通过本文的介绍,你已经了解了如何使用`JTree`创建和管理复杂的树状结构,以及如何通过自定义渲染器来增强其视觉表现力。掌握这些技巧,将使你在开发具有复杂层次关系的应用时更加得心应手。

    HTML转成Jtree

    而JTree则是一个Java库,它提供了一个可交互的树视图组件,常用于展示层次结构的数据。将HTML转换为JTree的过程主要是为了在Java应用程序中以树状结构展示HTML文档的结构。 要实现这个转换,我们需要以下步骤: 1....

    java Swing JTree的教程实例

    在例子中,使用了`FlowLayout`布局管理器将`JTree`添加到窗口中。 3. **节点的选中和信息获取**: JTree允许用户选择特定的节点。当用户选择节点时,可以通过监听`TreeSelectionListener`事件来获取选中的节点信息...

    JTree组件资料

    `JTree`是Java Swing的模型-视图-控制器(MVC)设计模式的一部分,其中树的数据结构由`DefaultTreeModel`类控制,`JTree`对象则是视图部分。 ### 1. 使用JTree 创建`JTree`的基本步骤如下: 1. **构建树模型**: ...

Global site tag (gtag.js) - Google Analytics