Non capisco bene come funziona il disegno in java

ho creato un applicazione grafica, un JFrame, aggiungendo ogni elemento direttamente sulla finestra, quindi

JFrame mio = new JFrame();

e poi

JButton pulsante = new JButton("prova");
pulsante.setBounds(...);
mio.add(pulsante);

e funziona tutto...ma ora ho bisogno di disegnare una freccia tra due pulsanti..e non so come fare, se faccio

mio.getContentPane().getGraphics().drawLine(...);
mio.repaint();

non funziona...allora ho provato a fare una classe Arrow che estende JComponent e ha un metodo:

public void paintComponent(Graphics g){
g.drawLine(...);
}

e poi
mio.getContentPane().add(new Arrow());

ma anche questo non funziona...

qualcuno potrebbe aiutarmi?