Meu projeto possui uma frame com 2 panels, o primeiro Formas que possui alguns radiobuttons pra selecionar uma opção, adicionado no BorderLayout.NORTH da frame, e outro que é a Tela adicionado no BorderLayout.CENTER da frame. O panel Tela deve pintar o pixel que o usuário clicar, e para isso estou usando mousehandler e mouselistener para pegar o x e y de onde foi clicado, e quando feito isso chamo a função repaint para desenhar o ponto. O problema é que quando chamado a função repaint a frame fica com o desenho do panel Forma duplicado, 1 vez onde deveria estar, e outra sobre o panel Tela. Quando redimensionada a frame a duplicação desaparece junto com todos os pontos desenhados.
Função paintComponent
public void paintComponent (Graphics g){
super.paintComponents(g);
g.setColor(Color.BLACK);
g.drawLine(x, y, x, y);
}
Função onde chamo o repaint (função dentro da subclasse MouseHandler que implementa MouseListener)
public void mousePressed(MouseEvent e) {
x = e.getX();
y = e.getY();
repaint();
}
Codigo da minha frame
import java.awt.BorderLayout;
import javax.swing.JFrame;
public class Janela extends JFrame {
private Tela tela;
private Formas formas;
public Janela() {
super("Trabalho CG");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(600, 600);
formas = new Formas();
tela = new Tela();
add(tela, BorderLayout.CENTER);
add(formas, BorderLayout.NORTH);
}
Imagens do programa em execução mostrando o bug
tela inicial
http://img148.imageshack.us/i/figura1hj.jpg/
depois de 1 repaint
http://img33.imageshack.us/i/figura2vc.jpg/
depois de varios repaint
http://img843.imageshack.us/i/figura3l.jpg/
