Tôi có một JTable với một số cột. Tôi muốn một cột cụ thể để thay đổi kích thước. Những gì tôi đã hy vọng là bằng cách sử dụng setPreferredWidth, cột sẽ đổi kích thước thành kích thước đó hoặc kích thước của các nội dung như vậy không cắt ngắn xảy ra và để phần còn lại của các cột mất không gian còn lại, nhưng thay vào đó, tất cả các cột, bao gồm cả tôi đã thay đổi kích thước, chia đều tất cả không gian của bảng; như thể setPreferredWidth đã làm không có gì ở tất cả. Trong thực tế, tôi muốn có thể thiết lập chiều rộng của một cột và có nó thu nhỏ đến kích thước đó mà không cắt bớt nội dung (tôi đã nhấn mạnh quá nhiều chưa?) Theo cách mà tất cả các cột chưa được thay đổi kích cỡ không gian còn lại. Sử dụng setMaxWidth cắt bớt nội dung (tôi đã đề cập đến tôi không thích điều đó?) Làm cách nào để thay đổi kích thước/thu nhỏ một cột mà không bị cắt xén và không làm việc hoàn toàn không có gì? Dưới đây là mã vi phạm:TableColumn setPreferredWidth không hoạt động
for (int i = 0, x = 0; i < table.getColumnModel().getColumnCount(); i++)
if ((x = model.getColumnWidth(i)) > -1)
table.getColumnModel().getColumn(i).setPreferredWidth(x);
Bảng này là trong một JPanel (MyListPanel - BorderLayout) mà là ở một JPanel (GridBagLayout) thêm với:
new GridBagConstraints(0, 3, 1, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 0, 2), 0, 0))
EDIT: Đây là các nhà xây dựng cho tôi lớp con của JPanel:
public MyListPanel(boolean showHeader, String title, ColData...columns) {
super(new BorderLayout());
model = new MyListTableModel(columns);
table = new JTable(model);
table.addFocusListener(this);
add(table);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
setTitle(title);
if (showHeader)
add(table.getTableHeader(), BorderLayout.NORTH);
for (int i = 0, x = 0; i < table.getColumnModel().getColumnCount(); i++)
if ((x = model.getColumnWidth(i)) > -1)
table.getColumnModel().getColumn(i).setPreferredWidth(x);
setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
}
Và MyListTableModel.ColData:
public static class ColData {
private int index;
private String title;
private int width;
public ColData(int _index, String _title, int _width) { index = _index; title = _title; width = _width; }
}
Không thực hiện mẹo: ( –