gpt4 book ai didi

java - JPanel 上的 paintComponent,图像闪烁然后消失

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

我有一个 JApplet(MainClass 扩展了 JApplet)、一个 JPanel(ChartWindow 扩展了 JPanel)和一个 Grafico 类。

问题是 Grafico 类实例有 2 个 JPanel,应该显示 2 个图像(每个面板 1 个)但是图像显示了一段时间后它们消失了:取而代之的是灰色背景(就像一个空的J面板)。每次 repaint() 调用(在 ChartWindow 类中进行)都会发生这种情况

MainClass init() 包含

chartwindow=new ChartWindow();
add(chartwindow)

chartwindow 有一个 Grafico 实例。

它是 ChartWindow 的 paintComponent(覆盖)

paintComponent(Graphics g)
{
super.paintComponent(g);
Image immagineGrafico=createImage(grafico.pannelloGrafico.getWidth()
,grafico.pannelloGrafico.getHeight());
Image immagineVolumi=createImage(grafico.pannelloVolumi.getWidth()
,grafico.pannelloVolumi.getHeight());
Graphics2D imgGrafico=(Graphics2D)immagineGrafico.getGraphics();
Graphics2D imgVolumi=(Graphics2D)immagineVolumi.getGraphics();
grafico.draw(imgGrafico,imgVolumi,mouseX,mouseY);

((Graphics2D)grafico.pannelloGrafico.getGraphics()).drawImage(immagineGrafico,0,0,this);
((Graphics2D)grafico.pannelloVolumi.getGraphics()).drawImage(immagineVolumi,0,0,this);
}

grafico 的 JPanel 以这种方式添加到 ChartWindow 的构造函数中

grafico=new Grafico()
................
add(grafico.pannelloGrafico);
add(grafico.pannelloVolumi);

如果您需要更多信息,请告诉我,非常感谢:-)

最佳答案

如果要在 JPanel 上绘制,则需要覆盖 JPanel 的 paintComponent 而不是图表窗口的。发生的情况是,每次 JPanel 绘制自身时,默认绘制都会覆盖您的图像。

     class PanelloVolumi extends JPanel{
//some code

public void paintComponent(Graphics g){

//paint one image here
}

}

对另一个 JPanel 做同样的事情。

然后将这些 JPanel 的实例添加到您的 Applet。

关于java - JPanel 上的 paintComponent,图像闪烁然后消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13891513/

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