PDA

Visualizza la versione completa : [Java] Organizzazione Interfaccia


HaCk88
27-06-2005, 12:29
Salve a tutti ragazzi.
Voglio porre alcune domande che mi si stanno formulando durante lo studio della grafica in java.
Sto vedendo che ci sono molte strutture tra cui JPanel, JButton, JScrollPane, JCheckBox,... ma quando creiamo una interfaccia come faccio a disporre gli oggetti grafici in maniera organizzata?? Se ogni funzione o procedura può essere contenuta in un file diverso dal file principale e successivamente richiamata ad esempio da un bottone o qualsiasi oggetto grafico interattivo?? Se si possono creare degli eseguibili con il proprio setup???
Per ora ho queste domande da porre :)

Grazie :ciauz:

Matteo982
27-06-2005, 13:13
Per quanto riguarda gli eseguibili in java devi creare dei file .jar che non sono devi veri e proprio .exe però l'effetto è lo stesso cioè lanciare le applicazioni con un clic del mouse.
Per quanto riguarda la disposizione dei componenti all'interno delle gui semplicemente ci sono dei layout (ce ne sono di diverso tipo) appositi...(guarda sulla documentazione il layout manager).
Per esempio c'è il GridLayout(int a, int b) che rappresenta una griglia di a righe e b colonne e tu tramite l'ordine in cui scrivi gli add inserisci i componenti (tipo bottoni ecc..) nelle varie caselle della griglia...

Era questo che ti serviva sapere?? :confused:

Ciao. :ciauz:

HaCk88
27-06-2005, 13:16
Si! In generale si! perchè quando creo un piccolo programmino con due bottoni non so proprio come posizionarlo in una zona precisa dello schermo :dhò:

LeleFT
27-06-2005, 13:49
Ecco... a questo riguardo, per poter posizionare i componenti in posizione precise all'interno della finestra (posizionamento libero tramite coordinate) bisogna svincolarsi dal LayoutManager.
Questa soluzione agevola la scrittura di applicazioni che devono girare sempre sulla stessa piattaforma, rendendole più maneggevoli, ma, dall'altro lato, rappresenta una sorta di incognita per tutte le applicazioni che devono essere portate su sistemi diversi. I LayoutManager, infatti, sono stati progettati appositamente per "garantire" lo stesso aspetto delle applicazioni su sistemi differenti.

Per svincolarsi dal LayoutManager è sufficiente settarlo a null:


// Nel costruttore della finestra (Swing)
getContentPane().setLayout(null);

// Nel costruttore della finestra (AWT)
setLayout(null);

A questo punto, tutti i componenti dovranno essere sistemati a mano, facendo uso del loro metodo setBounds() che ha questa firma:


public void setBounds(int posX, int posY, int larghezza, int altezza)

Ecco un esempio che posiziona una JLabel in alto a sinistra nella finestra e ne imposta la dimensione a 80x20


JLabel lbl = new JLabel("La JLabel");
lbl.setBounds(5, 5, 80, 20); // 5 pixel a destra e 5 pixel in basso
// rispetto all'angolo in alto a sinistra

Ciao. :ciauz:

Matteo982
27-06-2005, 13:53
quando ad esempio crei un JPanel di default ti usa un layout che ti piazza tutto accanto al altro...per cambiarlo devi fare così:

Supponiamo di voler utilizzare il GridLayout(int a, int b) che ti ho detto sopra.


JPanel p = new JPanel(new GridLayout(2,2));

p.add(bottone); <-- mette nella casellina 1 - 1
p.add(bottone); <-- mette nella casellina 1 - 2
p.add(bottone); <-- mette nella casellina 2 - 1
p.add(bottone); <-- mette nella casellina 2 - 2

(Immaginati una griglia di 2 per 2)

Ciao. :ciauz:

HaCk88
27-06-2005, 16:58
Ok :) Grazie ad entrambi :)
Mi dispiace solo che io non posso aiutare voi perchè sono ancora un principiante :cry:
Spero vi possa essere di aiuto in casi piccoli :zizi: per ora! Forse se riesco ad imparare bene il Java un giorno potrei esservi un pò di aiuto :)

Matteo982
27-06-2005, 23:30
chi vivrà vedrà... :D

Loading