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:
codice:
// 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:
codice:
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
codice:
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.