JTable: Fijar ancho de las columnas

From ChuWiki
Jump to navigation Jump to search

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.