我得到了一個JTable,我應用了AUTO_RESIZE_LAST_COLUMN。當我向左或向右拖動列時,它會自動調整最後一列的大小。
但是,JTable通過BorderLayout管理器連接到JPanel。當我調整JFrame的大小時,JPanel調整大小,並且由於JTable填充JPanel,JTable也調整大小。但是當我調整JFrame的大小時,AUTO_RESIZE_LAST_COLUMN不起作用,而是調整所有列的大小。JTable列可能在JFrame調整大小時不調整大小
我希望它只有 auto_resize最後一列,當JFrame更改大小時,而不是調整所有列的大小。
代碼:
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class JTableResize extends JFrame {
private JTable table;
private JPanel panel;
private JScrollPane pane;
DefaultTableModel model = new DefaultTableModel();
public JTableResize() {
super("JTable - Resize Problem");
setLayout(new BorderLayout());
panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setBackground(Color.red);
add(panel, BorderLayout.CENTER);
table = new JTable(model);
//panel.add(table);
model.addColumn("Resize");
model.addColumn("Problem");
model.addColumn("........");
model.addColumn("This should resize");
pane = new JScrollPane(table);
panel.add(pane);
//this is supposed to resize last column.. It works when you drag in the columns, but not when frame are resized
table.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
table.getTableHeader().setReorderingAllowed(false);
table.setShowVerticalLines(false);
for (int i = 0; i <= 50; i++) {
model.addRow(new Object[] {i, i, i, i});
}
}
public static void main(String[] args) {
JTableResize jtr = new JTableResize();
jtr.setSize(500, 500);
jtr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jtr.setVisible(true);
}
}
我沒有看到任何你的代碼錯誤.. !! !它工作得很好。 – Mac
@Mac嘗試運行它,並調整窗口的大小(使窗口變大)。您應該看到,JTable中的所有列正在調整大小。但我想要它,只調整最後一列(最右側)。所以當我把窗口放大時,只有最後一列會變大(擴展)。因此,第一列應重新調整大小,當窗口變大時:) –
下一次,請改善原始問題,而不是創建一個新問題。 –