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.