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

时间:2012-12-15 10:48:30

标签: java swing repaint paintcomponent

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

问题在于Grafico类实例有2个JPanel,应该显示2个图像(每个面板1个)但显示图像,过了一会儿它们消失了:而不是它们我得到一个灰色背景(像一个空的的JPanel)。每次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的JPanels以这种方式添加到ChartWindow的构造函数中

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

告诉我您是否需要更多信息,非常感谢: - )

1 个答案:

答案 0 :(得分:2)

如果要在它们上绘画,则需要覆盖JPanel的paintComponent而不是图表窗口。发生的事情是,每当JPanel自己绘制时,默认的绘画都会覆盖你的图像。

     class PanelloVolumi extends JPanel{
         //some code

         public void paintComponent(Graphics g){

             //paint one image here
         }

     }

为其他JPanel做同样的事情。

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