PDA

View Full Version : [java] allineamento di un pannello, sempre centrale?


gaglioppo
31-05-2006, 10:30
ciao amici

sto provando in tutti i modi ad allineare il contenuto di un Jpanel a sinistra e nn ci riesco, eppure nn dovrebbe essere difficile:



JPanel PannelloGriglia = new JPanel();
JScrollPane scrollPredizioni = new JScrollPane(PannelloGriglia);
....
PannelloGriglia.setLayout(new GridLayout(0,1));
PannelloGriglia.setAlignmentX(JComponent.LEFT_ALIGNMENT);
....
JPanel PannelloPredizioni = new JPanel();
PannelloPredizioni.setAlignmentX(JComponent.LEFT_ALIGNMENT);
...
PannelloGriglia.add(PannelloPredizioni);



dove sbaglio?

TellaspallaBob
31-05-2006, 10:59
Andiamo per ordine....
Per prima cosa, impara subito il modo di nominare le classi e gli attributi, altrimenti troverai in tanti che si rifiuteranno di impazzire a leggere il tuo codice.

Con la prima lettera maiuscola si scrivono solo i nomi delle classi.
Gli attributi (o variabili si scrivono con la prima lettera minuscola).
Vedrai che anche per te sarà più semplice leggere il codice.

Veniamo al tuo problema.
Devi sapere che la ViewPort della JScrollPane, utilizza un layout, che tende a far occupare (giustamente) l'intera area visibile al componente in essa ospitato.
Il trucco sta nel gestire gli oggetti interni pannello (nel tuo caso).

Scordati però il GridLayout, questo non gestisce nemmeno i preferredSize dei JComponent.

Il preferredSize, minimumSize e maximumSize sono gli unici strumenti che hai per gestire le dimensioni dei componenti che sono sottoposti a dei LayoutManager.

Siccome il discorso è lunghino, ti consiglio di consulatre i tutorial della SUN, sono poche e semplice paginette.

In linea di massima devi applicare un Layou adatto a quello che vuoi fare, non al JScrollPane, ma al JPanel.
Credo che quello più adatto per te è un GridBaglayout, ma è abbastanza complesso questo.
Oppure fare un mix fra diversi Layout.

gaglioppo
31-05-2006, 11:09
scusami per le maiuscole, rimedierò in tutto il mio tool. :doh:

in ogni caso non pare funzionare il semplice:


JPanel pannelloPredizioni = new JPanel();
pannelloPredizioni.setAlignmentX(JComponent.LEFT_ALIGNMENT);


ora toglimi una curiosità banale, ma cosi' come ho scritto sopra non dovrebbero allinearsi a sinistra tutti gli oggetti che entreranno nel pannelloPredizioni con .add? Mi auguro di si...ma la cosa nn mi funziona.

a presto e mille grazie

p.s. vedrò cosa dice il tutorial sun, spero si trovi facilmente

TellaspallaBob
31-05-2006, 13:52
Come ti dicevo, il problema è che tu stai allineando un componente, ma quello che si occupa di gestire la disposizione del pannello è la JScrollPane, anzi la ViewPort dello JScrollPane.

Sfrutta i LayoutManger, per gestire il layout del pannello al fine di disporre i componenti in esso contenuti come tu preferisci....

Ricorda che le SWING implementano il pattern MVC, cioè hanno un controller, una view ed un model.