PDA

View Full Version : [JAVA] - Creazione finestra come in allegato


itsrv
21-10-2008, 13:50
Salve ragazzi,

mi sto rompendo la testa nel tentare di fare la finestra come in allegato.

Non riesco ad allineare i componenti nella maniera corretta: ho provato ad utilizzare tutti i layout possibili.

Qualcuno sa come fare?

Grazie

^TiGeRShArK^
21-10-2008, 14:15
ma hai già provato con l'editor Matisse di Netbeans?

banryu79
21-10-2008, 14:37
Per cominciare mi sembra che la disposizione delle "aree" sia stata ottenuta molto probabilmente con un BorderLayout (http://java.sun.com/docs/books/tutorial/uiswing/layout/border.html), piazzando diversi JPanel "nestati" nelle diverse aree:

..http://img408.imageshack.us/img408/8194/finestrahd5.jpg (http://imageshack.us)
http://img408.imageshack.us/img408/finestrahd5.jpg/1/w398.png (http://g.imageshack.us/img408/finestrahd5.jpg/1/)

A partire da questa considerazione si risolve facialmente il posizionamento del bottone "Modifica".

Poi ognuno dei Jpanel nestati avrà il suo specifico LayoutManager per gestire i componenti al suo interno.
Ad esempio per la parte a "Nord" (JLabel "Prodotto" seguita da JComboBox e JButton "Informazioni") propenderei per un FlowLayout (http://java.sun.com/docs/books/tutorial/uiswing/layout/flow.html)o un BoxLayout (http://java.sun.com/docs/books/tutorial/uiswing/layout/box.html) o anche un GridLayout (http://java.sun.com/docs/books/tutorial/uiswing/layout/grid.html).

In ogni caso l'analisi ti viene più semplice e veloce se puoi usare un IDE che ti metta a disposizione un GUI designer come in NetBeans.

jobzino
21-10-2008, 16:15
Una facile soluzione al tuo problema senza molti rompicapo e' usare l editor grafico di netbeans per la costruzione dei Frame... Sposti tu con il mouse ogni componente dove vuoi... in un giro di 2 minuti risolvi tutto:D

banryu79
21-10-2008, 16:42
Una facile soluzione al tuo problema senza molti rompicapo e' usare l editor grafico di netbeans per la costruzione dei Frame... Sposti tu con il mouse ogni componente dove vuoi... in un giro di 2 minuti risolvi tutto:D
Sì ma se il frame in questione deve essere ridimensionabile "le proporzioni" dello spacing tra i componenti e il loro layout corretto, durante e dopo i vari resize, possono essere ottenuti solo con un corretto uso dei LayoutManger e una strategia di suddivisione dell'area del Frame mediante vari JPanel.

Altrimenti setti il Frame come non ridimensionabile: a quel punto puoi usare un posizionamento assoluto (null layout ed editing grafico via GUI editor).

itsrv
22-10-2008, 21:52
Per cominciare mi sembra che la disposizione delle "aree" sia stata ottenuta molto probabilmente con un BorderLayout (http://java.sun.com/docs/books/tutorial/uiswing/layout/border.html), piazzando diversi JPanel "nestati" nelle diverse aree:

..http://img408.imageshack.us/img408/8194/finestrahd5.jpg (http://imageshack.us)
http://img408.imageshack.us/img408/finestrahd5.jpg/1/w398.png (http://g.imageshack.us/img408/finestrahd5.jpg/1/)

A partire da questa considerazione si risolve facialmente il posizionamento del bottone "Modifica".

Poi ognuno dei Jpanel nestati avrà il suo specifico LayoutManager per gestire i componenti al suo interno.
Ad esempio per la parte a "Nord" (JLabel "Prodotto" seguita da JComboBox e JButton "Informazioni") propenderei per un FlowLayout (http://java.sun.com/docs/books/tutorial/uiswing/layout/flow.html)o un BoxLayout (http://java.sun.com/docs/books/tutorial/uiswing/layout/box.html) o anche un GridLayout (http://java.sun.com/docs/books/tutorial/uiswing/layout/grid.html).

In ogni caso l'analisi ti viene più semplice e veloce se puoi usare un IDE che ti metta a disposizione un GUI designer come in NetBeans.

innanzitutto grazie per le risposte!
banryu79 io sto seguendo un approccio proprio come da te ipotizzato. Borderlayout con nord,sud, centro, est e ovest. Per gli oggetti della zona nord e sud nessun problema.
I guai arrivano per i radio box e per la text area che dovrebbero andare nella zona centrale della maschera. Per i radio, visti come sono messi, ho usato un gridlayout (2,1) e per la text area un flowlayout ma l'allineamento complessivo è uno schifo.
Non posso usare altro che Java nativo: è un esercizio universitario e prevede solo uso di java evitando posizionamenti assoluti.

banryu79
23-10-2008, 10:41
I guai arrivano per i radio box e per la text area che dovrebbero andare nella zona centrale della maschera. Per i radio, visti come sono messi, ho usato un gridlayout (2,1) e per la text area un flowlayout ma l'allineamento complessivo è uno schifo.
Non posso usare altro che Java nativo: è un esercizio universitario e prevede solo uso di java evitando posizionamenti assoluti.

Usa il principio base della programmazione: se un problema è troppo complesso suddividilo in sottoproblemi più facili da risolvere.
Hint:
http://img410.imageshack.us/img410/9770/finestracj2.jpg (http://imageshack.us)

Francamente non so se l'area centrale si possa risolvere "in un colpo solo" tramite un singolo LayoutManager (e non ho voglia ne tempo di verificarlo) però credo tu possa gestire la cosa tramite ulteriore suddivisione in JPanel dell'area centrale.