gpt4 book ai didi

java - 在 clearRect() 和 repaint() 之后无法在 JPanel 上绘画

转载 作者:行者123 更新时间:2023-11-30 08:52:33 25 4
gpt4 key购买 nike

我有一个程序可以让用户作画。但是当用户单击调用 clearRect() 和 repaint() 的清除按钮时,用户不能再在同一面板上继续绘画。我遇到的另一个问题是,当用户单击保存或打开按钮(打开文件资源管理器窗口)时,如果用户按下取消,面板会将文件窗口绘制到面板上。我将如何解决这些问题?

public void paintComponent(Graphics g){
super.paintComponents(g);
g.fillOval(myX - radius, myY - radius, 2 * radius, 2 * radius);
if(img != null)
g.drawImage(img, 0, 0, null);
}

以下部分在 actionPerformed 方法中

if(source == clear){
g.setBackground(Color.WHITE);
g.clearRect(0, 0, getWidth(), getHeight());
repaint();
}

缓冲图像和图形

BufferedImage img = new BufferedImage(1000, 1000, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = img.createGraphics();

最佳答案

我怀疑 Graphics 上下文 g 在您的 ActionListener 中无效,可能是因为使用了 getGraphics() 不当。相反,让您的 ActionListener 更新 View 类中的字段并使用更新后的值修改 paintComponent() 中的 Graphics 上下文。

在此完整 example , buttonPanelactionPerformed() 的各种实现更新了 DrawingArea 中的属性。 DrawingArea 中的 paintComponent() 的实现在每次被调用时都知道要绘制什么。

image

关于java - 在 clearRect() 和 repaint() 之后无法在 JPanel 上绘画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30147632/

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