相关疑难解决方法(0)

paintComponent在绘图之上绘制其他组件

我正在尝试构建一个简单的绘图工具.该mouseDrag事件创建一个新的椭圆形,并导致我JPanelrepaint().

这到目前为止工作正常.但是,如果我mouseDrag在第一次触发事件之前按下任何按钮(或任何其他UI组件),则按钮将绘制在我面板的左上角.

我已将代码隔离到此测试应用程序中:

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 …
Run Code Online (Sandbox Code Playgroud)

java swing repaint graphics2d paintcomponent

8
推荐指数
2
解决办法
4634
查看次数

标签 统计

graphics2d ×1

java ×1

paintcomponent ×1

repaint ×1

swing ×1