JScrollPane, JTable y scroll horizontal

Estaba implementando una interfaz gráfica con Java, y quería insertar un objeto JTable dentro de un JScrollPane. La tabla era más grande que el JScrollPane, pero pese a ello, no se porqué sólo se mostraba el scroll vertical. Gasté mucho tiempo leyendo manuales de Swing, revisando mi código… Era algo muy simple y todo parecía estar bien, pero entonces… ¿por que no funcionaba?

Finalmente, encontré la solución: resulta que hay un bug en Java que aparece cuando quieres usar una JTable dentro de un JScrollPane. La solución fue crear una clase que extendiera a JTable, para poder sobreescribir el método JTable.getScrollableTracksViewportWidth() por este otro:

public boolean getScrollableTracksViewportWidth() {

if (autoResizeMode != AUTO_RESIZE_OFF) {

if (getParent() instanceof JViewport) {

return (((JViewport)getParent()).getWidth() > getPreferredSize().width);

}

}

return false;

}

Fuente: DaniWeb Forum

La clase java.util.Properties

No conocía esta clase hasta que la empecé a usar hace unos meses. Me encanta por lo fácil que hace la gestión de propiedades (o parámetros) en Java.

public class Properties extends Hashtable {

protected Properties defaults;
public Properties();
public Properties(Properties defaults);
public String getProperty(String key);
public String setProperty(String key, String defaultValue);
public Enumeration propertyNames();
public void load(InputStream in) throws IOException;
public void save(OutputStream out, String header);
public void list(PrintStream out);

}

Extiende java.util.HashTable, así que esta clase almacena cada propiedad como un par de (clave, valor). Si tu aplicación necesita diferentes parámetros para funcionar, puedes incluirlos en un fichero, y usar un objeto java.util.Properties para cargarlos.

Properties props = new Properties();
FileInputStream fichero = new FileInputStream(“fichero-de-propiedades.txt”);
props.load(fichero)

Con estas tres lineas, tendrás un objeto llamado “props” que contendrás las propiedades almacenadas en el fichero “fichero-de-propiedades.txt”. Pero, ¿cual debe ser el formato del fichero? Tiene que tener un par (propiedad, valor) por linea, ambos separados por un espacio en blanco, un “=” o “:”. Por ejemplo, el siguiente fichero sería válido:

Propiedad1=Valor1
#Esto es un comentario
Propiedad2:Valor2
Propiedad3 Valor3

Despues de cargar este fichero, ¿como accedemos a las propiedades? Si queremos usar el valor de “Propiedad1″:

String value = getProperty(“Propiedad1″);

O si quisieramos modificar el valor de “Propiedad2″:

setProperty(“Propiedad2″,”Nuevo valor”);

Más info: java.util.Properties

Powered by WordPress with GimpStyle Theme design by Horacio Bella.
Entries and comments feeds. Valid XHTML and CSS.