2011-04-27 50 views
0

我有一個放置在JPanel中的JTable,然後將它放置在另一個具有ScrollPane的JPanel的JFrame中。如果解釋混亂,可以在下面看到總體思路。我已經將我的JTable設置爲自動調整最後一列的大小,但它從不自動調整大小。問題是什麼?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); 
+0

你在這裏尋找什麼行爲?你想讓最後一列獲得所有額外的空間嗎?如果框架的尺寸縮小了,您是否只希望最後一列縮小? – wolfcastle 2011-04-27 20:37:57

+0

最後一列將加載完整文件路徑,所以我希望它根據該大小調整大小 – Hank 2011-04-27 20:42:26

+0

因此,您希望表格根據模型中的數據更改來調整大小?那麼我不認爲'setAutoResizeMode'會幫助你。這只是基於用戶實際調整列或包含表格的窗口來調整大小。如果您希望表格在列中顯示的數據發生更改時調整其列的大小,則需要自行處理大小調整。 – wolfcastle 2011-04-27 21:11:12

回答

2

你的JTable必須放置在一個JScrollPane中,以便調整大小以正常工作。您將JTable直接放在JPanel上。

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

我的最後一列仍然沒有調整大小,而且我的面板變得更大並帶有額外的不需要的空間 – Hank 2011-04-27 20:07:41

+0

可以通過調用表上的'setPreferredScrollableViewportSize'來修復額外的空間。現在我已經運行了代碼,我可以看到我的答案不是解決方案。 – wolfcastle 2011-04-27 20:40:03