PDA

View Full Version : [JAVA] GridBagLayout e ridimensionamento delle celle


franksisca
12-12-2009, 17:21
allora, io ho questa situazione


4 pulsanti sopra
2 liste ai lati
e delle jlabel in mezzo alle liste




ho fatto 4 colonne e 8 righe (mi pare)

per ogni colonna ho messo i jbutto e ho messo il weightx = 1 per "bloccare il ridimensionamento


però quando vado a riempire il testo delle jlabel mi si riimensiona tutto

ecco se non seleziono nilla
http://img94.imageshack.us/img94/6909/primab.th.jpg (http://img94.imageshack.us/i/primab.jpg/)
ecco quando seleziono
http://img94.imageshack.us/img94/2061/seconda.th.jpg (http://img94.imageshack.us/i/seconda.jpg/)

come faccio per impedire il ridimensionamento?

PGI-Bis
12-12-2009, 20:08
fissa le dimensioni minima, massima e preferita del componente che vuoi bloccare. Per usare le dimensioni "ottimali" (cioè quelle che l'UI assegna al componente al primo "pack"). Puoi creare un metodo ad hoc, tipo questo:

private static void createSizeFixer(final Component component) {
component.addComponentListener(new ComponentAdapter() {

public void componentResized(ComponentEvent e) {
component.removeComponentListener(this);
Dimension size = component.getSize();
component.setPreferredSize(size);
component.setMinimumSize(size);
component.setMaximumSize(size);
System.out.println("Size fixed");
}
});
}

Qui capita che al primo resize - che il componente bersaglio subirà all'atto della visualizzazione - l'ascoltatore di eventi si disconnette (ad evitare invocazioni multiple non necessarie) e "blocca" le dimensioni minima, massima e preferita sui valori attuali.

La ragione sta in ciò che GridBagLayout tiene conto delle tre dimensioni "saltando" da una all'altra secondo la ripartizione dello spazio conseguente all'applicazione dei pesi.

franksisca
13-12-2009, 09:09
inutile dire che funziona...grazie pgi :D

franksisca
13-12-2009, 10:55
mandato pvt perchè ovviamente A ME non funziona -.-

PGI-Bis
13-12-2009, 11:44
Fissa la dimensione dei componenti JScrollPane, non quella delle liste che gli vanno dentro.

franksisca
13-12-2009, 15:29
risolto...grazie mille