gpt4 book ai didi

Java - JPanel 上的 paintComponents 不工作

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:59:05 26 4
gpt4 key购买 nike

我创建了一个扩展 JFrame 的类并在其中添加了一个 JPanel,但是 paintComponents() 方法没有绘制任何东西在 JPanel 上。这是 paintComponents() 的代码,我选择使用双图像缓冲。

  public void paintComponents(Graphics graphics) {
panel.paintComponents(graphics);

bufferedImage = createImage(sizeX, sizeY);
Graphics2D g = (Graphics2D) bufferedImage.getGraphics();


for (ImageData myImage : imageData) {
g.drawImage(myImage.getImage(), myImage.getX(), myImage.getY(), null);
}

graphics.drawImage(bufferedImage, 0, 0, null);
}

这有什么问题吗?顺便说一句,我尝试了 paint() 并且它起作用了,但我认为这不是执行此操作的正确方法。

感谢您的宝贵时间。 :)

最佳答案

不要扩展顶级组件,例如 JFrame。而是保留一个框架的实例,并向其添加一个面板。所有自定义绘画或添加组件都在面板中完成。

在面板中进行自定义绘画时,请在 paintComponent 方法中进行( paintComponents 不要覆盖它)。

其他提示

  • 记得调用 super.paintComponent(g);。这对于确保考虑到边框和填充等很重要。
  • null 换成 this。每个 JComponent 都是一个 ImageObserver

关于Java - JPanel 上的 paintComponents 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12012013/

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