JTable不会自动调整最后一列的大小

时间:2011-04-27 19:55:33

标签: java swing user-interface jtable

我有一个JTable放在一个JPanel中,然后放在一个JFrame中,另一个JPanel有一个ScrollPane。如果解释令人困惑,可以在下面看到一般的想法。我已将JTable设置为自动调整最后一列的大小,但它从不自动调整大小。有什么问题?

JFrame - > JPanel - > JTable
- > JPanel - >滚动窗格

我的代码:
this指的是我的课程JFrame

this.setLayout(new BorderLayout());

JTextArea log = new JTextArea(20, 50);
log.setEditable(false);
JScrollPane logScrollPane = new JScrollPane(log);

String[] configRow = {"Config File", "Not Loaded"};
String[] logRow = {"Log File" , "Not Loaded"};
DefaultTableModel dtm = new DefaultTableModel();
dtm.addColumn("");
dtm.addColumn("");
dtm.addRow(configRow);
dtm.addRow(logRow);

JTable status = new JTable(dtm);
status.setTableHeader(null);
status.setShowGrid(false);
status.setEnabled(false);
status.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);

JPanel tablePanel = new JPanel();
tablePanel.setLayout(new BorderLayout());
tablePanel.add(status, BorderLayout.LINE_START);

JPanel logPanel = new JPanel();
logPanel.add(logScrollPane);

this.add(tablePanel, BorderLayout.NORTH);
this.add(logPanel, BorderLayout.SOUTH);

1 个答案:

答案 0 :(得分:2)

您的JTable必须放在JScrollPane中才能使调整大小正常工作。您将JTable直接放在JPanel上。

tablePanel.add(new JScrollPane(status), BorderLayout.LINE_START):