Java 如何设置JXTreeTable第一列的背景色

Java 如何设置JXTreeTable第一列的背景色,java,swing,jxtreetable,Java,Swing,Jxtreetable,我有一个JXTreeTable,并实现了一个自定义渲染器 所以我有这个代码: public class CustomTreeTableSpeseXCategoriaSpese extends JLabel implements TreeCellRenderer, TableCellRenderer { /** * */ private static final long serialVersionUID = 4842418316518803090L;

我有一个JXTreeTable,并实现了一个自定义渲染器

所以我有这个代码:

public class CustomTreeTableSpeseXCategoriaSpese extends JLabel implements TreeCellRenderer, TableCellRenderer {
    /**
     * 
     */
    private static final long serialVersionUID = 4842418316518803090L;
    private Font fontTotale = new Font("Verdana", Font.BOLD, 12);
    private Font fontNegativo = new Font("Verdana", Font.BOLD, 12);

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, 
            boolean isSelected, boolean hasFocus, int row, int column) {
        setOpaque(true);
        setHorizontalAlignment(SwingConstants.RIGHT);
        if (row== table.getRowCount()-1) {
            setForeground(Color.BLACK);
            setBackground( Color.RED );
            setFont(fontTotale);
        }else if(row != table.getRowCount() && column !=3){
            setForeground( Color.BLACK );
            setBackground(new Color(200, 200, 200));
            setFont(UtilitySwing.getTableFont());
        }else if(row != table.getRowCount()-1 && column ==3){
            //verifico il valore se negativo rosso
            //se positivo blu
            String valore = value.toString();
            if(valore.startsWith("-")){
                setForeground(Color.red);
                setFont(fontNegativo);
            }else{
                setForeground(Color.blue);
                setFont(fontNegativo);
            }
        }
         setText(value != null ? value.toString() : "<null>");
        return this;
    }

    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
        setOpaque(true);
        if (row== tree.getRowCount()-1) {
            setForeground(Color.BLACK);
            setOpaque(true);
            setBackground( Color.RED );
            setFont(fontTotale);
        }else if(row != tree.getRowCount()){
            setForeground( Color.BLACK );
            setBackground(new Color(200, 200, 200));
            setOpaque(true);
            setFont(UtilitySwing.getTableFont());
        }
         setText(value != null ? value.toString() : "<null>");
        return this;
    }
} 
如果我尝试运行此代码,我可以显示以下内容:

如果我尝试打开第一个节点,我可以看到:

我想要这个: 1) 显示全文 2) 从图像中可以看出,我想在第一列设置背景颜色为灰色。我怎样才能修好它

编辑


帖子不是重复的,因为在segnalation帖子中有JTree,但在我的帖子中,我有JXTreeTable,这是不同的

这可以使用
org.jdesktop.swingx.decorator.HighlightPredicate
s来完成

HighlightPredicate hlPred = new HighlightPredicate() {
    @Override
    public boolean isHighlighted(Component renderer,
            ComponentAdapter adapter) {
        return someCondition ? true : false;
    }
};

ColorHighlighter hl = new ColorHighlighter(hlPred, hlBgColor, hlFColor);
treeTable.addHighlighter(hl);

另请参见

这可以使用
org.jdesktop.swingx.decorator.HighlightPredicate
s来完成

HighlightPredicate hlPred = new HighlightPredicate() {
    @Override
    public boolean isHighlighted(Component renderer,
            ComponentAdapter adapter) {
        return someCondition ? true : false;
    }
};

ColorHighlighter hl = new ColorHighlighter(hlPred, hlBgColor, hlFColor);
treeTable.addHighlighter(hl);

另请参见

在该帖子中,有一个JTree,在我的帖子中有一个JxtreeTable是的,这是真的,但解决方案可能也适用,或者至少可能会为您指出正确的方向。请原谅我,但我不知道如何解决此问题这确实不是重复,JXTreeTable为hierarchy列提供了一个硬连线渲染器,这意味着自定义渲染器无效。在该帖子中,可能有一个JTree,在我的帖子中,有一个JXTreeTable是的,但是这个解决方案也可能适用,或者至少可以为您指明正确的方向Xcuse me,但我不知道如何解决这个问题这确实不是重复的,JXTreeTable为hierarchy列提供了一个硬连接的渲染器,这意味着自定义渲染器没有任何效果。