I JFrame, come tutti (o quasi) i componenti Container di Swing hanno per default un layout di tipo BorderLayout (o GridLayout).
Se vuoi mettere i controlli dove vuoi tu puoi usare una tecnica, secondo me, molto efficace:
- Settare il layout del Container (JFrame, JPanel, ...) a null
- Impostare posizione e dimensioni dell'oggetto che vuoi aggiungere
- Aggiungerlo.
In questo modo avrai il pieno controllo dello spazio del tuo Container. Un esempio per capire:
codice:
public class MioFrame extends JFrame {
private JPanel jp;
private JTextPane jtp;
public MioFrame() {
getContentPane().setLayout(null); //tolgo il LayoutManager predefinito
jtp = new JTextPane();
jtp.setBounds(0, 0, 300, 100); // Imposto posizione e dimensione del mio JTextPane
jp = new JPanel();
jp.setBounds(0, 101, 300, 199); // Imposto posizione e dimensione del mio JPanel
setSize(300, 300); // Imposto la dimensione della finestra
getContentPane().add(jtp);
getContantPane().add(jp);
show();
}
... // Altri metodi
}
La sintassi del metodo setBounds è la seguente:
setBounds(int posizioneX, int posizioneY, int larghezza, int altezza);
posizioneX è la posizione orizzontale dell'angolo superiore sinistro del tuo oggetto da inserire
posizioneY è la posizione verticale dell'angolo superiore sinistro del tuo oggetto da inserire
larghezza e altezza sono le dimensioni del tuo oggetto.
Ciao.