View Full Version : [JAVA] Consigli realizzazione GUI complessa
F@lkland§
24-08-2008, 10:38
Ciao ragazzi mi stavo imbattendo alla realizzazione del mio software e cercavo di capire che layout manager utilizzare per l'interfaccia che vorrei realizzare.
Sommariamente vorrei realizzare un interfaccia di questo tipo:
Che layoutmanager mi consigliate di utilizzare?
http://img134.imageshack.us/img134/5729/layoutxp7.th.jpg (http://img134.imageshack.us/my.php?image=layoutxp7.jpg)
Vi ringrazio!
F@lkland§
24-08-2008, 10:39
Avevo pensato a tre BorderLayout per i pannelli principali, per l'interno del pannello di sinistra uno SpringLayout, il tutto inseriti in un BorderLayout.CENTER che ne dite?
avastreg
24-08-2008, 11:38
io ti consiglio di fare l'interfaccia con un editor visuale tipo NetBeans (che è veramente curato), o al massimo con il plugin di Eclipse.. so che gli altri mi criticheranno, ma ti risparmi un sacco di tempo e di imprecazioni
[...] Che layoutmanager mi consigliate di utilizzare? uno diverso per ogni pannello :p
come layout principale per disporre i pannelli direi un GridBagLayout. GridBagLayout è una classe notoriamente complessa, quindi se ne trovi uno più semplice meglio.
io ti consiglio di fare l'interfaccia con un editor visuale tipo NetBeans (che è veramente curato), o al massimo con il plugin di Eclipse.. so che gli altri mi criticheranno, ma ti risparmi un sacco di tempo e di imprecazioni non ti criticherei se Java avesse le partial classes, come C#. e invece ti critico perché non è assolutamente detto che risparmi un sacco di tempo: a causa della pessima organizzazione del codice autogenerato potrebbe ritrovarsi a perdere molto tempo in fasi di sviluppo successive alla creazione della GUI.
Visual C# risolve questo problema proprio usando le partial classes: il codice schifoso autogenerato è isolato e nascosto :Prrr:
Vai di NetBeans, senza ombra di dubbio.
e poi ne riparliamo :asd:
non ti criticherei se Java avesse le partial classes, come C#. e invece ti critico perché non è assolutamente detto che risparmi un sacco di tempo: a causa della pessima organizzazione del codice autogenerato potrebbe ritrovarsi a perdere molto tempo in fasi di sviluppo successive alla creazione della GUI.
è buona abitudine separare nettamente il codice che disegna la grafica dalla logica applicativa, quindi non è affatto un problema :read:
in poche parole anche io consiglio di disegnare l'interfaccia con un disegnatore di interfacce :fagiano:
F@lkland§
25-08-2008, 11:00
in pratica un plugin tipo jigloo mi risolverebbe tutti i problemi?
so che mi farebbe risparmiare un po di tempo...ma non vorrei che mi metta un sacco di codice inutile...
se usi eclipse dovrebbe esserci visual editor come plugin. jigloo non lo conosco
in ogni caso se tieni ben separato il codice che riguarda la grafica dalla logica del programma (cioè quello che bisognerebbe fare sempre e comunque), il codice autogenerato non interferisce con il tuo.
ps. devi anche decidere se utilizzare swing (quelle standard in ambiente java) o swt (quelle utilizzate da eclipse) come librerie grafiche
Io consiglio di imparare ad utilizzare il GridBagLayout. Lo scorso anno ho dovuto scrivere un'interfaccia grafica in Java per la prima volta ed ho utilizzato la guida presente su questo forum. Rapida ed indolore. :D
Per quanto riguarda i controlli, secondo me ti conviene utilizzare Swing. ;)
PS: il codice che produce NetBeans non è come quello che scriverei io quindi evito di usarlo. :(
F@lkland§
26-08-2008, 15:42
sì praticamente la sto scrivendo io l'interfaccia con il GridBagLayout :D
finora tutto bene però quando arrivo per fare il pannello delle prenotazioni il gridBag non va più...:muro: :muro:
è pure ho seguito alla lettera anch'io il manuale....:rolleyes:
banryu79
26-08-2008, 16:52
sì praticamente la sto scrivendo io l'interfaccia con il GridBagLayout :D
finora tutto bene però quando arrivo per fare il pannello delle prenotazioni il gridBag non va più...:muro: :muro:
è pure ho seguito alla lettera anch'io il manuale....:rolleyes:
Senza il codice e/o maggiori informazioni è un po' dura capire cosa c'è che non va... :Prrr:
F@lkland§
26-08-2008, 17:16
Allora cerco di essere il più preciso possibile:
GridBagLayout layout = new GridBagLayout();
pannelloPrenotazioni.setLayout(layout);
GridBagConstraints c = new GridBagConstraints();
c.gridx=0;
c.gridy=0;
c.fill=HORIZONTAL;
c.weighty=0;
c.weightx=0;
c.gridwidth=4;
c.anchor = GridBagConstraints.NORTH;
pannelloPrenotazioni.add(label, c);
GridBagConstraints c1 = new GridBagConstraints();
c1.gridx=0;
c1.gridy=1;
c1.fill=NONE;
c1.weighty=0;
c1.weightx=0;
c1.anchor = GridBagConstraints.EAST;
pannelloPrenotazioni.add(lblOrario, c);
label sarebbe un'intitolazione
lblOrario sarebbe una semplice label
ma la visualizzazione di entrambe mi viene sempre al centro e sovrapposte :muro:
F@lkland§
26-08-2008, 17:21
ho utilizzato la forma estesa per fa comprendere i GridBagConstraints
dimenticavo, pannelloPrenotazioni è inserito a sua volta in un GridBagLayout
c.gridx = 1;
c.gridy = 0;
pannelloPrenotazioni.setPreferredSize(newDimension(300,300));
pane.add(creaPannelloPrenotazioni(),c);
banryu79
27-08-2008, 12:20
L'errore è qua:
GridBagLayout layout = new GridBagLayout();
pannelloPrenotazioni.setLayout(layout);
GridBagConstraints c = new GridBagConstraints();
c.gridx=0;
c.gridy=0;
c.fill=HORIZONTAL;
c.weighty=0;
c.weightx=0;
c.gridwidth=4;
c.anchor = GridBagConstraints.NORTH;
pannelloPrenotazioni.add(label, c);
GridBagConstraints c1 = new GridBagConstraints();
c1.gridx=0;
c1.gridy=1;
c1.fill=NONE;
c1.weighty=0;
c1.weightx=0;
c1.anchor = GridBagConstraints.EAST;
pannelloPrenotazioni.add(lblOrario, c);
Metti "c1" al posto della "c" in rosso.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.