动态调整JTable的行高

本文介绍如何在Java Swing中实现JTable的行高动态调整,使用MyModel和自定义TableCellRenderer,根据单元格内容调整行高,提高表格的视觉效果。

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

动态调整JTable的行高


import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import java.awt.*;

public class JTableDyChangeRowHeight extends JPanel{

    private JTable table;


    public JTableDyChangeRowHeight() {
    }

    private void init() {
        table = new JTable(new MyModel());

        table.getColumnModel().getColumn(0).setCellRenderer( new RowHeightRanderer());

        this.setLayout(new BorderLayout());

        this.add(table,BorderLayout.CENTER);

    }

    public static void main(String[] args) {
        JFrame frame=new JFrame();

        frame.setSize(500, 400);
        frame.setLocation(300, 200);
        frame.setLayout(new BorderLayout());//设置布局管理器

        JTableDyChangeRowHeight talble=new JTableDyChangeRowHeight();

        talble.init();

        frame.add(talble,BorderLayout.CENTER);



//        frame.add(but1);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置默认关闭按钮
        frame.setVisible(true);


    }


}

class MyModel extends AbstractTableModel {

    private String[] colname = new String[5]; //表头信息
    private String[][] data = new String[10][5]; //表内容


    public void init(){

        //表内容赋值
        this.colname[0]="第1列";
        this.colname[1]="第2列";
        this.colname[2]="第3列";
        this.colname[3]="第4列";
        this.colname[4]="第5列";

        //表内容赋值
        for(int i = 0; i < 10; i++) {
            for(int j = 0; j < 5; j++) {
                data[i][j] = "( " + (j+1) + ", " + (i+1) + " )";
            }
        }

    }

    public MyModel() {
        init();
    }

    @Override
    public int getRowCount() {
        return 10;
    }

    @Override
    public int getColumnCount() {
        return 5;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        return data[rowIndex][columnIndex];
    }
}



class RowHeightRanderer implements TableCellRenderer
{

    protected TableCellRenderer realRenderer;

    public RowHeightRanderer()
    {
        this.realRenderer = new DefaultTableCellRenderer();
    }

    public Component getTableCellRendererComponent(
            JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
    {
        Component comp = realRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

        int height=table.getRowHeight();

        table.setRowHeight(row,row % 2 == 1 ? height:height*2);

        return comp;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值