我有一个 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/