Bạn phải đặt autoResize thành OFF (setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
), nhưng bạn cũng cần một phương thức trợ giúp để thay đổi kích thước các cột của mình.
Đây là bên trong một lớp tùy chỉnh mà kéo dài JTable, nhưng bạn có thể cũng giống như dễ dàng tham khảo một JTable hiện:
public void resizeColumnWidth() {
int cumulativeActual = 0;
int padding = 15;
for (int columnIndex = 0; columnIndex < getColumnCount(); columnIndex++) {
int width = 50; // Min width
TableColumn column = columnModel.getColumn(columnIndex);
for (int row = 0; row < getRowCount(); row++) {
TableCellRenderer renderer = getCellRenderer(row, columnIndex);
Component comp = prepareRenderer(renderer, row, columnIndex);
width = Math.max(comp.getPreferredSize().width + padding, width);
}
if (columnIndex < getColumnCount() - 1) {
column.setPreferredWidth(width);
cumulativeActual += column.getWidth();
} else { //LAST COLUMN
//Use the parent's (viewPort) width and subtract the previous columbs actual widths.
column.setPreferredWidth((int) getParent().getSize().getWidth() - cumulativeActual);
}
}
}
Gọi resizeColumnWidth() bất cứ khi nào bạn thêm một hàng.
Tùy chọn thêm một người biết lắng nghe để bàn để các cột cũng được thay đổi kích cỡ khi bảng riêng của mình được thay đổi kích cỡ:
public MyCustomJTable() {
super();
addHierarchyBoundsListener(new HierarchyBoundsAdapter() {
@Override
public void ancestorResized(HierarchyEvent e) {
super.ancestorResized(e);
resizeColumnWidth();
}
});
setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
}
Nguồn
2016-01-09 17:57:12
thấy hướng dẫn này: [Bảng Cột Adjuster] (http://tips4java.wordpress.com/2008/11/10/bảng-cột-điều chỉnh /) –