动态调整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.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;
}
}