|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
[java] dimensione scrollPane
Ciao, ho un JPanel che mi fa da "desktop" e all'interno di esso c'è un JScrollPane...quando apro un'immagine (è una specie di editor di immagini) lo scrollPane mi si adatta alle dimensioni del "desktop", ma quando ridimensiono il frame principale questo mi rimane nella stessa posizione (praticamente non mi vengono visualizzate più le barre di scroll)...
allora, quando creo lo scrollpane setto le dimensioni in questo modo: Codice:
innerScrollPane.setPreferredSize(new Dimension(Editor.getEditor().getDesktop().getWidth(),Editor.getEditor().getDesktop().getHeight())); teoricamente al resize del frame dovrei fare la stessa cosa, ma non funziona...come si può risolvere? è strano perchè è come se il desktop mantenesse sempre le stesse dimensioni...però ho notato che se chiudo l'immagine ma non il programma e apro di nuovo l'immagine (stavolta il frame principale è già ridimensionato) le scrollbar mi spuntano nella posizione corretta (cioè ridimensionate)... Ultima modifica di pumppkin : 16-01-2007 alle 12:22. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
|
dalla sommità della mia ignoranza, temo sia una questione legata al thread che gestisce la visualizzazione...come sommamente mi fu spiegato tempo fa qui...
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Può essere di tutto ma se dovessi scommettere direi che è un problema di LayoutManager. In questo caso per risolvere la svista occorre avere la struttura dell'interfaccia grafica a partire dalla finestra principale fino al contenuto del JViewport proiettatto dal tuo JScrollPane: chi contiene cosa e con quale LayoutManager.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
allora, spero di non sbagliare (il programma lo ha fatto un altro, io lo sto solo modificando) ma la disposizione dovrebbe essere questa:
JFrame è il contenitore principale contiene JPanel chiamato "desktop" con BorderLayout contiene a sud una state bar con alcuni parametri a centro richiamo una classe (chiamata SVGFrame) che estende il JPanel che contiene lo scrollPane (chiamato innerScrollPane) lo scrollPane contiene un JPanel in cui vengono visualizzate delle canvas |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
è solo una classe che estende l'oggetto JPanel e, nel mio caso, non ha nessun Layout
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Allora ho capito male io.
Al centro del pannello del contenuto del JFrame (BorderLayout) c'è una classe SVGPanel che estende JPanel e contiene un JScrollPane (innerScrollPane) o sta da qualche altra parte?
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
No, all'interno di jframe c'è un jpanel(quello chiamato desktop)..a sua volta, dentro il jpanel (posizionato al centro) c'è una classe svgFrame che estende jPanel(il nome della classe può trarre in inganno) e all'interno di questa classe c'è uno scrollpane (chiamato innerscrollpane)
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
non ho utilizzato nessun setLayout quindi non ha un layout
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quasi
FlowLayout attesta il contenuto in base alle sue dimensioni preferite. Se a te interessa che il contenuto si espanda ad occupare tutto lo spazio disponibile al contenitore allora prova ad usare un GridLayout. Puoi farlo semplicemente dichiarando nel costruttore come prima istruzione: super(new GridLayout(1, 1)); senza bisogno di altri interventi.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#12 | |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
grandissimo!!!...adesso funziona alla grande!!
....grazie mille!!un'ultima cosa...che vuol dire Quote:
Ultima modifica di pumppkin : 16-01-2007 alle 15:20. |
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Be', vuol dire quello che hai visto succedere impostando il layout a GridLayout.
Tutto parte dalla finestra. La finestra ha un contenitore predefinito in cui finiscono le cose che ci aggiungi. Questo contenitore ha una certa larghezza ed una certa altezza. Quando infili qualcosa in un contenitore la posizione e le dimensioni che assume questo qualcosa dipendono sia dal LayoutManager sia dalle proprietà di ciò che hai aggiunto. Una differenza l'hai già sperimentata. Se il contenitore ha un FlowLayout come LayoutManager allora quello che aggiungi assume la sua dimensione preferita e una posizione che dipende dal LayouManager. Se usi un GridLayout(1, 1) quello che aggiungi assume la dimensione del contenitore (meno il bordo). Quest'ultimo fatto è ciò che intendo per espansione.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
ti ringrazio nuovamente...sei stato di grande aiuto!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:39.











....grazie mille!!








