View Full Version : [JAVA/Swing] Modo pulito per aggiungere componenti al volo
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
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 :).
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?
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.
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ò.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.