相关疑难解决方法(0)

JTree中的颜色行

我想在JTree中对元素进行着色.但是,仅仅在标签上添加背景颜色看起来有点奇怪.特别是如果选择了多个节点,则生成的形状看起来粗糙且分散注意力.

有没有办法让背景扩展树元素的整个宽度,以便整行变成彩色?从左边框开始或从标签的开头开始,但绝对延伸到组件的右边界?

这是一个基于这个问题的小型自包含演示.

import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;
public class SO26724913 {
    public static void main(String[] args) {
        DefaultMutableTreeNode a = new DefaultMutableTreeNode("a");
        DefaultMutableTreeNode b = new DefaultMutableTreeNode("b");
        DefaultMutableTreeNode c = new DefaultMutableTreeNode("c");
        a.add(b);
        a.add(c);
        final JTree tree = new JTree(a);
        tree.setCellRenderer(new DefaultTreeCellRenderer() {
                @Override
                public Component getTreeCellRendererComponent
                    (JTree tree, Object value, boolean selected,
                     boolean expanded, boolean leaf, int row, boolean focus)
                {
                    JComponent c = (JComponent)
                        super.getTreeCellRendererComponent
                        (tree, value, selected, expanded, leaf, row, …
Run Code Online (Sandbox Code Playgroud)

java swing background jtree background-color

7
推荐指数
1
解决办法
1773
查看次数

如何为JTree单元设置透明背景?

伙计们,

我正在尝试创建一个渐变JTree控件.除了树单元格的背景不透明外,以下代码大部分都有效.如果有人打电话告诉我,我做得不对,我将不胜感激.

预先感谢您的帮助.

问候,
彼得


package TestPackage;

import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import java.awt.*;

public class Test {

    public Test() {
        JFrame frame = new JFrame();

        JPanel framePanel = new JPanel();
        framePanel.setLayout(new BorderLayout());
        frame.setContentPane(framePanel);


        DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("Item");
        DefaultMutableTreeNode childNode = new DefaultMutableTreeNode("Child");
        rootNode.add(childNode);

        GradientTree tree = new GradientTree(rootNode);
        // JTree tree = new JTree(rootNode);
        // tree.setBackground(Color.blue);
        tree.setCellRenderer(new MyRenderer());

        JScrollPane scroll = new JScrollPane(tree);
        scroll.setOpaque(false);
        framePanel.add(scroll, BorderLayout.CENTER);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

    }

    public static void main(String[] args) { …
Run Code Online (Sandbox Code Playgroud)

java swing transparency renderer jtree

1
推荐指数
1
解决办法
3356
查看次数