Usar o Graphics somente dentro do JPanel

Eai Galera!
Seguinte… estou criando uma ferramenta de desenho livre.
Utilizo um JFrame com vários Labels e Jpanel dentro dele.

Em um desses Jpanel é o que vou fazer o desenho livre.

Mas quando tento utilizar o Graphics para desenhar, ele desenha em todo o JFrame, não somente dentro do JPanel que eu quero =/

Pesquisei muito e minha ultima alternativa foi pedir a ajuda de vocês.

Desde já agradeço!

Segue código abaixo (Estou fazendo com NetBeans):

[code]public class Principal extends javax.swing.JFrame {
int xvalue = -10, yvalue = -10;

public Principal() {
    super("Drag to paint");        
    initComponents();               
}

@Override
public void paint ( Graphics g ){            
    //jPanel1.paint(g);
    g.fillOval(xvalue, yvalue, 10, 10); // desenha o ponto    

}

private void jPanel1MouseDragged(java.awt.event.MouseEvent evt) {                                     
    xvalue = evt.getX()+10; // ponto na ponta do mouse
    yvalue = evt.getY()+28;               
    repaint();
} 

public static void main(String args[]) {               
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Principal().setVisible(true);
        }
    });
}                   

}[/code]

ebeckemkamp
Se o código que você fez até agora é esse, fica a pergunta: cade o JPanel no qual você quer desenhar? Você está desenhando no JFrame, pois está sobrescrevendo o método paint() da classe JFrame, quando deveria sobrescrever o paintComponent() de um JPanel.
Algo mais ou menos assim:

[code]public class MyPanel extends JPanel{
@Override
protected void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g.create();
Ellipse2D desenho = new Ellipse2D.Double(10, 10, 100, 100); // cria uma elipse
g2.draw(desenho); // desenha a elipse
g2.dispose();
}

// o código para desenhar ao arrastar deve vir nessa classe também!
}[/code][code]public class Principal extends javax.swing.JFrame {
public Principal() {
super(“Drag to paint”);
MyPanel p = new MyPanel();
this.getContentPane().add§;
initComponents();
}

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Principal().setVisible(true);
}
});
}
}[/code]Obs: não testei este código, podem ser necessários alguns ajustes

Abraço.