Problemas com repaint em uma aplicação java similar ao Paint do windows

Estou tentando fazer com que os desenhos, no caso a linha, seja desenhado no jpanel ( pnlDesenho ) ao mesmo tempo que a pessoa está arrastando o mouse usando o evento dragged, só que quando uso o metodo repaint para que não fique milhares de linhas aparecendo loucamente, o jpanel buga e meio que duplica os botoes da tela, quando a janela é diminuída o bug some , mas quando é usada novamente para desenhar a linha volta a aparecer!.alguém sabe como isso pode ser resolvido? estou usando o repaint no mouse dragged e no released. Desculpem minha ignorância sobre o tema, mas é a primeira vez que uso métodos do graphics

Olá

Provavelmente vc está usando o paintComponents (com “s”) ao invés do paintComponent (sem “s”). Verifique se está usando o paintComponents e remova o “s”. O paintComponents redesenha o component fazendo aparecer duplicado.

Uma sugestao, poderia usar anti-aliasing

graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
    RenderingHints.VALUE_ANTIALIAS_ON);

olá obrigado por responder, entao eu nao estou usando o paintComponent nesse projeto, realmente eu vi uma pessoa
com o mesmo problema porem o dela era no component.

eu teste com o anti-aliasing e deu o seguinte erro

graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

eu tentei arrumar assim : Graphics graphics2D = pnlDesenho.getGraphics(); (janela que uso)
mas continuou na mesma.

consegui fazer compilar :

Graphics2D g2 = (Graphics2D)g;
		   g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
		   RenderingHints.VALUE_ANTIALIAS_ON); 

mas continua bugando

Tem certeza q é problema do repaint, verifique se duplica removendo o repaint do mouselistener, caso seja o repaint, substitua por pintar a tela toda de branco e redesenhar tudo por cima.

Caso ainda tenha problemas, vc está desenhando diretamente no component ou está usando um bufferedImage? Se estiver desenhado no component, então vc está sobrescrevendo os metodos paintComponent/paint ou está usando component.getGraphics?

estou usando o getGraphics na hora de desenhar alguma figura, pois meu professor ja nos deu esse projeto o usando. Então esse problema só deu com repaint(); mesmo, até testei no projeto de mais 2 amigos e deu o mesmo problema, já ate usei a estratégia dos buffers e nada, só me resta tentar pintar tudo de branco e redesenhar tudo como me indicou ^^, vou testar e em breve posto os resultados! obg

Consegui finalmente fazer com que a reta apareça quando o mouse é dragged, porém ficou meio lenta etc…
eu que ainda nao fiz direito o paintComponent(); mas apenas duas linhas já ajudaram. ! ^^ mt obrigado vc me deu ótimas ideias, assim que conseguir deixar perfeito coloco a solução para quem tiver o mesmo problema!

Recomendo que use o JavaFX, muito mais rápido e facil de fazer, mas se é um exercicio é melhor usar o component.getGraphics, pois tem professor q não gosta de outros jeitos.

Usar o paintComponent é melhor, mas tem alguns problemas de desempenho e qualidade, então use um bufferedImage para desenhar os objetos e depois use o paintComponet para desenhar o bufferedImage, dessa forma terá grande desempenho. Para ter melhor desempenho ainda, poderá criar “layers”, use 2 bufferedImages, um para a imagem final e outra para o drag do mouse, assim não precisa redesenhar todos os objetos, só o desenho formado pelo drag, depois no release, redesenhe no bufferedImage final.

1 curtida

ajudou muito obrigado, a resolução para o meu problema acabou sendo:
repaint();
setSize(tamanhoW,tamanhoH);
nada mais funcionou, mas os dois juntos quebraram um galho!