paintComponent рисует другие компоненты поверх моего рисунка

Я пытаюсь создать простой инструмент рисования.mouseDrag события создают новый эллипс и вызывает мойJPanel кrepaint()

Это работает отлично до сих пор. Тем не менее, если я нажму любую кнопку (или любой другой компонент пользовательского интерфейса) до запускаmouseDrag Событие впервые, кнопка нарисована в левом верхнем углу моей панели.

Я выделил код в это тестовое приложение:

import java.awt.BasicStroke;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test extends JFrame
{
    public Test()
    {
        final JPanel paintPanel = new JPanel(){
            @Override
            protected void paintComponent(Graphics g)
            {
                Graphics2D g2d = (Graphics2D)g;
                g2d.setPaintMode();

                g2d.setStroke(new BasicStroke(1));
                g2d.fillRect(100, 100, 10, 10);
            }
        };

        paintPanel.setPreferredSize(new Dimension(300,300));
        paintPanel.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e)
            {
                paintPanel.repaint();
            }
        });

        this.setLayout(new FlowLayout());

        this.add(paintPanel);
        this.add(new JButton("Dummy"));

        this.pack();
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }

    public static void main(String... args)
    {
        new Test();
    }
}

 

Скриншот для "видя» проблема в моем основном приложении

Ответы на вопрос(2)

Ваш ответ на вопрос