Estoy usando un JScrollPane
para mostrar un JTable
. Quiero que las columnas de la tabla tengan un tamaño mínimo, de modo que cuando se encoja la pantalla, aparezca el desplazamiento horizontal; pero también quiero que puedan expandirse cuando la pantalla se ensancha. Con el código actual, las columnas no pasan su valor mínimo, es solo que la ventana gráfica deja de mostrar toda la tabla y no activa la barra de desplazamiento horizontal. ¿Hay algún método para establecer en qué ancho debe aparecer la barra de desplazamiento?Barra horizontal en JScrollPane
He aquí una parte del código que tengo:
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
}
Este es el código para el método initColumns, en caso de que lo necesite
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());
}
}
Para una mejor ayuda antes, publique un [SSCCE] (http://pscode.org/sscce.html). –