`
747017186
  • 浏览: 331674 次
社区版块
存档分类
最新评论

jtree相关的getTreeCellRendererComponent方法的使用

    博客分类:
  • java
 
阅读更多

我们在设置jtree的样式的时候,一般都用DefaultTreeCellRenderer这个类进行构造。

基本代码:

Jtree tree=new Jtree();

DefaultTreeCellRenderer ren=new DefaultTreeCellRenderer();

ren.setBackgroundSelectionColor(Color newColor);//选中的时候背景颜色什么的。

tree.setCellRenderer(ren);//设置tree的颜色

 

但是这只是针对于选中,不选中。或者整体的tree的样式的调节。很死板,不能单独对一个节点进行样式的改变。

我们在来看看这个类,DefaultTreeCellRenderer。这个类实际上是实现的接口TreeCellRenderer,这个接口有个方法:

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

 

将当前树单元格的值设置为 value。如果 selected 为 true,则将单元格作为已选择的单元格进行绘制。如果 expanded 为 true,则当前扩展该节点,如果 leaf 为 true,则该节点表示叶节点,如果 hasFocus 为 true,则该节点当前拥有焦点。tree 是为其配置接收者的 JTree。返回渲染器用来绘制值的 Component
我们可以写一个新类继承这个 DefaultTreeCellRenderer类。然后覆写这个方法。最终可以实现单个单个节点tree的样式的设置。
class MyTreeCellRenderer extends DefaultTreeCellRenderer {
    private final TreeCellRenderer renderer;
    public String key;
    public MyTreeCellRenderer(TreeCellRenderer renderer,String key) {
        this.renderer = renderer;
        this.key=key;
    }
    @Override
    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean isSelected, boolean expanded,boolean leaf, int row, boolean hasFocus) {
   
        JComponent c = (JComponent) renderer.getTreeCellRendererComponent(tree, value, isSelected, expanded, leaf, row, hasFocus);
        if (isSelected) {
            c.setOpaque(false);//设置该组件边缘像素不可编辑
            c.setForeground(getTextSelectionColor());
        } else {
            c.setOpaque(true);
            if (key!=null && !key.isEmpty() &&
                    value.toString().toLowerCase().startsWith(key.toLowerCase())) {//如果以该关键字开头的
           
                c.setForeground(getTextNonSelectionColor());
                c.setBackground(Color.YELLOW);//则设置黄颜色作为高亮
            } else {
                c.setForeground(getTextNonSelectionColor());
                c.setBackground(getBackgroundNonSelectionColor());
            }
        }
        return c;
    }
}
主类:
public class HighTest {
    public static void main(String[] args) {
//整体窗口的使用
final JFrame jFrame=new JFrame("我的第一个窗体");
jFrame.setSize(new Dimension(800, 500));//设置窗体的大小
jFrame.setBackground(Color.BLACK);
jFrame.setLocation(new Point(300, 300));//设置窗体显示的位置
jFrame.setVisible(true);
jFrame.setLayout(new FlowLayout());
jFrame.addWindowListener(new WindowAdapter() {//加入关闭窗体事件
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.out.println("系统正在关闭");
System.exit(0);
}
});
  DefaultMutableTreeNode color  =   new  DefaultMutableTreeNode( " Color ");//设置一个tree的根节点color
  DefaultMutableTreeNode gray  =   new  DefaultMutableTreeNode ( " Gray " );//设置另一个节点gray
  color.add (gray);//把Gary加入到color
  //设置各个节点子类、父类关系
  DefaultMutableTreeNode red=new  DefaultMutableTreeNode ( " Red " );
  color.add (red );
  DefaultMutableTreeNode Lightgray=new  DefaultMutableTreeNode ( " Lightgray " );
  gray.add (Lightgray );
  DefaultMutableTreeNode Darkgray=new  DefaultMutableTreeNode ( " Darkgray " );
  gray.add (Darkgray );
  DefaultMutableTreeNode Green=new  DefaultMutableTreeNode ( " Green " );
  color.add ( Green);
  JTree example5  =   new  JTree (color);//初始化jtree,把根节点color传入
  
  example5.addTreeSelectionListener(new SelectNodeHandle(example5));
  
  example5.addMouseListener(new SelectNodeHandle(example5));
  
  example5.setCellRenderer(new MyTreeCellRenderer(example5.getCellRenderer()," Lightgray "));
//getCellRenderer通过这个方法可以取得TreeCellRenderer一个接口对象,“Lightgray ”就是关键字,这个相当于调用新类的构造方法
  
  jFrame.add(example5);//加入jframe面板
}
}

 
  • 大小: 61.8 KB
分享到:
评论

相关推荐

    JTree控件的使用

    `TreeCellRenderer`则控制着树中每个节点的外观,通过重写`getTreeCellRendererComponent`方法,可以自定义节点的显示样式,如文本、图标等。 `JTree`提供了事件监听机制,例如`TreeExpansionListener`监听树的展开...

    JTree用法大全 swing java

    本文将详细介绍`JTree`的各种使用方法,包括如何创建、自定义外观、以及一些高级功能的实现。 #### 自动展开树 `JTree`可以通过编程方式来控制其展开和折叠的行为。例如,下面的代码展示了如何创建一个`JTree`并...

    jtree

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

    JTree设置不同图标

    这个类将重写 getTreeCellRendererComponent 方法,以便我们可以自定义树的节点。 在 IconNodeRenderer 类中,我们重写了 getTreeCellRendererComponent 方法。在这个方法中,我们可以通过 ((IconNode) value)....

    详细介绍JTree控件的教程以及源码

    本教程将深入讲解JTree的使用方法,包括创建、配置、事件处理以及自定义节点图标等方面,同时提供相关的源码示例。 1. **创建JTree** 创建JTree的基本步骤是创建一个TreeNode对象或TreeModel,然后将其传递给JTree...

    jtree 节点添加图片

    你可以使用DefaultTreeCellRenderer的子类,并覆盖`getTreeCellRendererComponent`方法,以便在其中添加图片。 ```java public class ImageTreeCellRenderer extends DefaultTreeCellRenderer { @Override public...

    jTree添加图片

    `Jtree不同节点使用不同图片实现 - Alexander - 博客园_files`这个文件夹很可能包含了与博客文章相关的HTML和CSS资源,例如图片文件等。这些文件可能用于演示代码中的具体效果,读者可以参考这些资源来更好地理解...

    JTree(节点带有checkbox)代码实例

    在本实例中,我们将深入探讨如何创建一个具有复选框的`JTree`,以及相关的编程实践。 首先,我们需要导入必要的Java Swing库,包括`javax.swing.JTree`、`javax.swing.tree.DefaultTreeModel`、`javax.swing.tree....

    JTree 需要树的可以研究下

    下面将详细介绍`JTree`的相关知识点,并结合实例进行讲解。 1. **`JTree`的基本概念** `JTree`是Java AWT和Swing库中的一个类,继承自`JComponent`。它用于创建和显示树状结构,通常用于展示具有父节点和子节点的...

    JTree2.0 目录树

    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { Component c = super.getTreeCellRendererComponent...

    jtree带复选框的例子

    我们需要创建一个继承自DefaultTreeCellRenderer的类,并覆盖`getTreeCellRendererComponent`方法。在这个方法里,我们可以设置复选框的显示,并根据节点的状态来改变其选中或未选中的外观。 2. **处理复选框的...

    JTree(节点带有checkbox)代码实例2

    `DefaultTreeCellRenderer`是Swing默认的渲染器,我们可以继承它并覆盖`getTreeCellRendererComponent`方法,在其中添加复选框组件。下面是一个基本的实现: ```java import javax.swing.tree.TreeCellRenderer; ...

    对jtree实现增加修改,设置节点图片

    3. **更新模型**:最后,我们需要通知JTree的模型(默认是DefaultTreeModel)有关更改。 ```java DefaultTreeModel treeModel = (DefaultTreeModel) jTree.getModel(); treeModel.nodeStructureChanged(parentNode);...

    JTree示例

    通过分析和运行这个示例,你可以更直观地理解`JTree`的使用方法,同时也可以尝试修改代码以实现不同的功能,如添加更多的节点、改变节点的图标等。 总之,`JTree`是Java Swing中展示和操作层次数据的强大工具。通过...

    IconNode.zip_jtree_zip

    【IconNode.zip_jtree_zip】是一个与Java编程相关的压缩包,其主要包含了一个名为`IconNode.java`的源代码文件。这个文件很可能是一个实现了自定义树节点类的代码,其中结合了图标显示功能,用于增强Java Swing中的...

    JTree(树状控件)2.0

    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { // 自定义渲染逻辑 } }); ``` 3. **交互操作**:...

    JTree with JCheckBox的资料整理

    在`JTree`的节点中添加`JCheckBox`,我们需要自定义`TreeCellRenderer`,重写`getTreeCellRendererComponent`方法。在这个方法中,我们可以创建一个`DefaultTreeCellRenderer`的实例,并在其上添加`JCheckBox`。...

    JAVA 显示文件目录(像windows的资源管理器一样)

    程序中使用了 getTreeCellRendererComponent() 方法来渲染树形结构的节点。这个方法是 FileTreeRenderer 类的一个方法,用于返回渲染的节点组件。 8. 文件目录遍历 程序中使用了 File 类来遍历文件目录。File 类是...

    java Swing带复选框的树

    我们可以创建一个类实现这个接口,并在`getTreeCellRendererComponent`方法中设置一个JCheckBox。 3. **TreeSelectionModel**:为了处理用户的选择,我们需要关注TreeSelectionModel,它是JTree的模型部分,负责...

Global site tag (gtag.js) - Google Analytics