图像与 Java 树节点对象的关联

发布于 2024-08-10 17:53:55 字数 41 浏览 4 评论 0原文

我有一个树节点。我希望在查看树时在节点名称旁边显示图像。我该怎么办?

I have a Tree node. I want an image to be displayed beside the node name when the tree is viewed. How do I go about?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

帥小哥 2024-08-17 17:53:55
  1. 从您的图像创建一个 ImageIcon

    ImageIcon 图标 = ....;
    有多种方法可以做到这一点)

  2. 创建 DefaultTreeCellRenderer 的实例

    DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();

  3. 设置渲染器的叶子图标字段

    renderer.setLeafIcon(icon);

  4. 设置树的渲染器

    tree.setCellRenderer(renderer);

如果您无法弄清楚,请尝试演示

  1. create an ImageIcon from your image

    ImageIcon icon = ....;
    (there are a number of ways to do this)

  2. create an instance of DefaultTreeCellRenderer

    DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();

  3. set the leaf icon field of the renderer

    renderer.setLeafIcon(icon);

  4. set the tree's renderer

    tree.setCellRenderer(renderer);

if you can't figure it out try the demo

木緿 2024-08-17 17:53:55

您可以使用自定义叶子渲染器。
重写 getTreeCEllRendererComponent() 方法。

当你渲染一个组件时。

使用面板并将文本放在前面,然后将图标放在文本后面。

然后返回组件。

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


    JLabel l = (JLabel)renderer.getTreeCellRendererComponent(
            tree, "", true, expanded, leaf, row, true);
    Component com = renderer.getTreeCellRendererComponent(
            tree, "", true, expanded, leaf, row, true);
    l.setIcon(YOUR_IMAGE);
    l.setText(value.toString());



        panel.removeAll();
        panel.add(this, BorderLayout.EAST);
        panel.add(j);
        return panel;



}

You can use a custom leaf renderer .
Override the getTreeCEllRendererComponent () method.

When you render a component .

Use a panel and put the text first and the icon folliwng the text .

And then return the component.

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


    JLabel l = (JLabel)renderer.getTreeCellRendererComponent(
            tree, "", true, expanded, leaf, row, true);
    Component com = renderer.getTreeCellRendererComponent(
            tree, "", true, expanded, leaf, row, true);
    l.setIcon(YOUR_IMAGE);
    l.setText(value.toString());



        panel.removeAll();
        panel.add(this, BorderLayout.EAST);
        panel.add(j);
        return panel;



}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文