我使用JScrollPane
來顯示JTable
。我希望表中的列具有最小尺寸,以便在縮小屏幕時出現水平滾動;但我也希望他們能夠在屏幕變寬時進行擴展。使用當前的代碼,列不會傳遞最小值,只是視口停止顯示整個表格,並且不會激活水平滾動條。有沒有一種方法來設置滾動條應該出現在哪個寬度?JScrollPane上的水平欄
下面是一些代碼,我有:
private void addTable(JTable table){
initColumnSizes(table);
JPanel tablePanel = new JPanel(new BorderLayout());
JScrollPane scrolled = new JScrollPane(table);
scrolled.getViewport().setMinimumSize(tableSize);
scrolled.setMinimumSize(tableSize);
scrolled.setPreferredSize(tableSize);
scrolled.setBorder(border);
tablePanel.add(scrolled, BorderLayout.CENTER);
//more stuff
}
下面是initColumns方法的代碼,如果你需要它
private void initColumnSizes(JTable table) {
TableModel model = table.getModel();
TableColumn column = null;
Component comp = null;
int headerWidth = 0;
int cellWidth = 0;
TableCellRenderer headerRenderer =
table.getTableHeader().getDefaultRenderer();
for (int i = 0; i > table.getColumnCount(); i++) {
column = table.getColumnModel().getColumn(i);
comp = headerRenderer.getTableCellRendererComponent(
table, column.getHeaderValue(),
false, false, 0, 0);
headerWidth = comp.getPreferredSize().width;
comp = table.getDefaultRenderer(model.getColumnClass(i)).
getTableCellRendererComponent(
table, model.getValueAt(0, i),
false, false, 0, i);
cellWidth = comp.getPreferredSize().width;
column.setPreferredWidth(Math.max(headerWidth, cellWidth));
column.setMinWidth(column.getPreferredWidth());
}
}
爲了儘快得到更好的幫助,請發佈[SSCCE](http://pscode.org/sscce.html)。 – 2011-05-11 18:40:42