Я использую JScrollPane
для отображения JTable
. Я хочу, чтобы столбцы в таблице имели минимальный размер, чтобы при уменьшении экрана появлялась горизонтальная прокрутка; но я также хочу, чтобы они могли расширяться, когда экран становится шире. В текущем коде столбцы не получают своего минимального значения, просто область просмотра перестает отображать всю таблицу и не активирует горизонтальную полосу прокрутки. Есть ли метод, при котором ширина полосы прокрутки должна отображаться?
Здесь ' s часть кода, который у меня есть:
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());
}
}