gpt4 book ai didi

java - 如何防止paintComponent()从一开始就运行?

转载 作者:行者123 更新时间:2023-12-02 00:17:00 25 4
gpt4 key购买 nike

我正在尝试制作类似于 Paint 的东西,但遇到了一些障碍。基本上,您在调用paintComponent() 的JPanel 中进行绘制。然而,当程序运行时,左上角会出现一个不需要的点。我认为这是因为在程序开始时调用了paintComponent()。有什么办法可以禁用这个吗?下面列出了代码(我删除了导入),感谢您的阅读。这是paintBoard 类:

public class PaintBoard extends JPanel implements MouseListener
{
Image img;
//PaintBoard panel;
int circleX = 25;
int circleY = 25;
int x;
int y;

public PaintBoard()
{
this.addMouseListener(this);
}
public void paintComponent(Graphics g)
{
g.setColor(Color.RED);

g.fillOval(x, y, circleX, circleY);
}
public void mouseClicked(MouseEvent arg0)
{
}
public void mouseEntered(MouseEvent arg0)
{
}
public void mouseExited(MouseEvent arg0)
{
}
public void mousePressed(MouseEvent arg0)
{
x = arg0.getX();
y = arg0.getY();;


repaint();
}
public void mouseReleased(MouseEvent arg0)
{
}

}

这是主类:

public class Main 
{
JFrame mainFrame = new JFrame("Painting test");
PaintBoard board = new PaintBoard();



public Main() throws IOException
{
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setSize(1750, 1000);
mainFrame.setLayout(new GridLayout(2, 2));
mainFrame.add(board);
//mainFrame.pack();
mainFrame.setVisible(true);
}

public static void main(String[] args) throws IOException
{
new Main();
}

}

最佳答案

这有点错误。您想要一个后缓冲区,它是一个缓冲图像,当鼠标按下并移动或抬起鼠标按钮时,您可以绘制它。每次调用paintComponent时,您都希望使用graphics.draw或类似的东西将此后备缓冲区复制到组件。

关于java - 如何防止paintComponent()从一开始就运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11732003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com