定制jtable cellrenderer与表的单元格标题颜色 [英] customizing jtable cellrenderer with table's cell header color

查看:394
本文介绍了定制jtable cellrenderer与表的单元格标题颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是一个非常类似于我的上一篇文章的问题。
我需要自定义JTable的一些单元格,在某种程度上,它们看起来像一个表头单元格。
我使用Nimbus的外观和感觉,我试图检索JTable编辑器的颜色:

  public class HeaderCellRenderer extends JLabel implements TableCellRenderer {


@Override
public Component getTableCellRendererComponent(JTable table,Object value,
boolean isSelected,boolean hasFocus,int row,int column ){

System.out.println(OK);
this.setOpaque(true);
setBackground(UIManager.getColor(TableHeader.background));
return this;
}

}

我按照post 来获取要提供给getColor方法(TableHeader.background)的名称。
尽管我现在已经做了,返回的颜色与我的表头单元格不一样。



你有什么想法吗? p>

编辑:



我注意到,而不是颜色,应该是一个渐变,但我找不到键使用。我查看了此列表

解决方案

典型的Look&感觉是由的实例提供的 sun.swing.table.DefaultTableCellHeaderRenderer 。你可以获得如下的副本:

  class HeaderRenderer implements TableCellRenderer {

TableCellRenderer renderer;

public HeaderRenderer(JTable table){
renderer = table.getTableHeader()。getDefaultRenderer();
}

@Override
public Component getTableCellRendererComponent(
JTable table,Object value,boolean isSelected,
boolean hasFocus,int row,int col){
return renderer.getTableCellRendererComponent(
table,value,isSelected,hasFocus,row,col);
}
}

,您可以按照常规方式安装给定列的类型令牌

  table.setDefaultRenderer(SomeObject.class,new HeaderRenderer(table)); 


That's a question really similar to this previous post of mine. I need to customize some cell of a JTable, in a way that they would look like a table header cell. I'm using Nimbus look and feel and I'm trying to retrieve the color of JTable's editor:

public class HeaderCellRenderer extends JLabel implements TableCellRenderer{


    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {

        System.out.println("OK");
        this.setOpaque(true);
        setBackground(UIManager.getColor("TableHeader.background"));
        return this;
    }

}

I follow this post to get the name to be supplied to getColor method ("TableHeader.background"). Despite what I've done since now, the color returned isn't the same of my table's header cells.

Do you have any idea?

EDIT:

I noticed that instead of a color it should be a gradient but I can't find the right key to use. I looked this list.

解决方案

The appearance of the default table header for a typical Look & Feel is provided by an instance of sun.swing.table.DefaultTableCellHeaderRenderer. You can obtain a copy as follows:

class HeaderRenderer implements TableCellRenderer {

    TableCellRenderer renderer;

    public HeaderRenderer(JTable table) {
        renderer = table.getTableHeader().getDefaultRenderer();
    }

    @Override
    public Component getTableCellRendererComponent(
        JTable table, Object value, boolean isSelected,
        boolean hasFocus, int row, int col) {
        return renderer.getTableCellRendererComponent(
            table, value, isSelected, hasFocus, row, col);
    }
}

and you can install it in the usual way for a given column's type token:

table.setDefaultRenderer(SomeObject.class, new HeaderRenderer(table));

这篇关于定制jtable cellrenderer与表的单元格标题颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆