JTable: Fijar ancho de las columnas
Normalmente en un JTable las columnas cogen el ancho adecuado para mostrar los datos, dentro de lo posible y de los datos iniciales que tenga en el momento de visualizarlo. A veces esto no es suficiente y queremos hacer que alguna columna tenga un ancho determinado. Vamos a ver cómo hacerlo.
Si hemos creado así el JTable
DefaultTableModel modelo = new DefaultTableModel(); modelo.addColumn("columna 1"); modelo.addColumn("columna 2"); modelo.addRow(new String [] {"11","12"}); modelo.addRow(new String [] {"21","22"}); JTable tabla = new JTable(modelo);
las columnas se llaman "columna 1" y "columna 2". Podemos obtener un TableColumn -clase que representa una columna- de la columna que nos interese pidiéndoselo al JTable por su nombre
TableColumn columna = tabla.getColumn("columna 1");
Este TableColumn tiene métodos para fijar el ancho. Los métodos son los siguientes:
- columna.setPreferredWidth(anchoEnPixels) -- Fija el ancho preferido de la columna en pixels. En el momento de visualizar el JTable la columna tendrá, si es posible, este ancho. Luego el usuario puede modificarlo.
- columna.setMinWidth(anchoEnPixels) -- Este fija el ancho mínimo que puede tener la columna. El usuario no podrá reducir la columna menos de este ancho.
- columna.setMaxWidth(anchoEnPixels) -- Este fija el ancho máximo que puede tener la columna. El usuario no puede hacer la columna más ancha.
Si fijamos simultánemante el mínimo y el máximo con el mismo valor, la columna tendrá un ancho fijo y no se podrá modificar.