PDA

View Full Version : [JAVA/Swing] Modo pulito per aggiungere componenti al volo


lovaz
21-02-2007, 10:33
Salve,
dovrei aggiungere dei componenti a una finestra gia'
disegnata, che dovrebbe allargarsi sulla destra per far posto ai nuovi componenti,
e nasconderli quando non servono piu'
- tipo la finestra per salvare i file in firefox...

Cosi' funziona:
( (JFrame) getParent().getParent().getParent() ).pack();

Sono in un JPanel dentro al frame principale, il parent e' un JLayeredPane,
il cui parent e' un JRootPane, che a sua volta ha il mio JFrame per parent.

C'e' un modo piu' pulito per farlo?

Grazie

PGI-Bis
21-02-2007, 12:25
Se vuoi ottenere la finestra a cui appartiene un componente:

Frame window = JOptionPane.getFrameForComponent(aComponent);

Normalmente non si alterano programmaticamente le dimensioni di una finestra perchè questo causa un effetto "blob" dell'interfaccia. La comparsa/scomparsa di regioni della GUI è gestita allargando o restringendo i pannelli interni alla finestra, a cornice immutata. Naturalmente è una libera scelta :).

lovaz
21-02-2007, 15:49
Grazie.

Ma non capisco cosa intendi per "effetto blob".
Io faccio un setVisible (true o false) su un JSeparator e un JFileChooser e un
pack del frame, e l'effetto grafico è perfetto.

Tu intendi un setSize o setPreferredSize del panello?
Ma se il tutto non sta nel frame? Come fai a non alterare la cornice?

PGI-Bis
21-02-2007, 16:54
L'effetto blob è quello delle finestre che si allargano e si restringono da sole. Ci sono un bel po' di ragioni per cui è l'utente a stabilire quanto grande debba essere una finestra. Magari ha il tuo programma a sinistra e la foto di Giovannona Coscialunga sulla destra: a tradimento gliene copri un pezzo e lui perde l'attimo fuggente.

lovaz
21-02-2007, 18:17
Beh, ma la finestra si allarga solo se l'utente preme il pulsante
"Show file browser", se si copre Giovannona sono cavoli suoi... :D
e poi basta ripremere il pulsante e la finestra torna come prima.

Non so che browser usi, ma piu' o meno è lo stesso effetto
che fa la finestra di salvataggio di firefox, per mostrare altre destinazioni
- non in tutte le versioni però.