java swing的渲染table方法:

本文详细介绍了Java Swing中表格(Table)的渲染方法,包括列头渲染、行头渲染和表中数据渲染。通过自定义渲染类并重写关键方法,实现不同部分的个性化展示,如颜色、字体等。同时,提供了具体的代码实例,展示了如何设置背景色、前景色和渐变效果,以及根据数据内容动态调整单元格样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

swing中table的渲染为三种:

1 列头渲染:

方法:新建一个类  testheaderrender,继承defaulttablecolrenderer  里面实现方法getTableCellRendererComponent()方法,

在其他方法中如果有一个新的table组件,在里面写上:table.getTableHeader().setDefaultRenderer(new HeaderRenderer());即可实现列头的渲染。

2 行头的渲染:

方法:同样的新建一个类testcolheadrenderer,继承 defaulttablecolrenderer ,在这个类里面实现方法 getTableCellRendererComponent();调用的时候,在new 的新的table中不调用,而是在给这个表格添加attribute的时候添加如下语句:

attribute.setRendererClass("cams.alarm_manage.alarmBan.ColHeadRenderer");

3 表中数据的渲染:

方法:直接在你new的新的table后面写个匿名内部类,实现方法:prepareRenderer返回

components组件,里面的关键代码:

Component component = super.prepareRenderer(renderer, row, col);
                JComponent comp = (JComponent) component;
                TTableColumn column = (TTableColumn)         

                 table.getColumnByIndex(col);

下面根据实际的条件,在进行判断,判断完以后,返回 component组件;

4.渲染实例:

 

table = new PersonTable(box){
            public void prepareTableHeaderRenderer(JLabel renderer, TTableColumn tableColumn){
                renderer.setOpaque(false);//
如果为 true,则该组件绘制其边界内的所有像素
                renderer.setForeground(Color.white);// 设置此组件的前景色。
                renderer.setFont(font);// 设置此组件的字体。
            }
            public Component prepareRenderer(TableCellRenderer renderer, int row, int col) {
                Component component = super.prepareRenderer(renderer, row, col);
                if(alternateButton.isSelected()){
                    setAlternateRowColor(component, row, col);
                }else{
                    setGradientRowColor(component, row, col);
                }
                Person person = (Person) table.getElementByRowIndex(row);//获得该行的persona对象
                if(person != null && !person.isSelected()){//当前对象不为空且没有被选择
                    if(person.getAge() == 20 || person.getAge() == 80){
                        component.setBackground(Color.green);
                    }
                }
                return component;
            }
            public boolean isCellEditable(int row, int col) {
                TTableColumn column = this.getColumnByIndex(col);
                if(column.getName().equals(TWaverConst.USER_PROPERTY_PREFIX + "MultiLine")){
                    return true;
                }
                return super.isCellEditable(row, col);
            }
           
            protected JTableHeader createDefaultTableHeader() {
                return new JTableHeader(columnModel){
                    public void paintComponent(Graphics g) {
                        this.setOpaque(false);
                        Graphics2D g2 = (Graphics2D)g;
                        g2.setPaint(new GradientPaint(0, this.getHeight()/4, Color.black, 0, this.getHeight()/7*6, tableHeaderColor, true));
                        g2.fillRect(0, 0, table.getWidth(), this.getHeight());
                        super.paintComponent(g);
                    }
                };
            }           
        };

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值