加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在具有自定义行背景颜色的JTable中使用intercellSpacing

发布时间:2020-12-15 08:36:18 所属栏目:Java 来源:网络整理
导读:我有一个JTable,我想使用自定义背景颜色突出显示一些行.我已经完成了以下课程: public class MyTable extends JTable { private ListRefData data = null; public ListRefData getData() { return data; } public void setData(ListRefData data) { this.da
我有一个JTable,我想使用自定义背景颜色突出显示一些行.我已经完成了以下课程:

public class MyTable extends JTable {

    private List<RefData> data = null;

    public List<RefData> getData() {
        return data;
    }

    public void setData(List<RefData> data) {
        this.data = data;
    }

    @Override
    public Component prepareRenderer(TableCellRenderer renderer,int row,int column) {
        Component comp = super.prepareRenderer(renderer,row,column);

        if (this.data == null || row < 0 || row > this.data.size()-1){
            return comp;
        }

        RefData rowData = this.data.get(row);
        if (rowData.getStatus() < 3000){
            comp.setBackground(Color.YELLOW);
        } else {
            comp.setBackground(Color.WHITE);
        }

        return comp;
    }

}

所有这一切都像一个魅力,我得到了我想要的.接下来,在查看生成的GUI时,我意识到该表看起来过于浓缩.一切看起来都挤得水泄不通.与使用默认的JTable设置一样;)

嗯,这很容易解决我想:

myTable.setIntercellSpacing(new java.awt.Dimension(10,1));

现在,单元格间隔很好但是,添加的单元格边距现在是默认的表格背景颜色,在我的情况下是白色.这看起来很丑陋.

我假设单元间距增加了单元格边框和prepareRenderer返回的组件之间的间距.这可以解释结果.但是我怎样才能让它改变细胞本身的背景呢?

我的prepareRenderer解决方案不适合这项任务吗?还是有其他解决方案吗?

解决方法

Border方法是正确的,但最好是单元格渲染器,而不是prepareRenderer()方法:

JTable.setDefaultRenderer(Object.class,new DefaultCellRenderer() {
        @Override
        public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int column) {
            JComponent component = (JComponent) super.getTableCellRendererComponent(table,value,isSelected,hasFocus,column);
            component.setBorder(...);
            return component;
        }
    });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读