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

标签 java swing repaint paintcomponent

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

相关文章:

java - 简单的小程序游戏错误

javascript - 更快地操作现有的 HTML 或删除 HTML 然后重新创建它?

java - 在 JComboBox 中选择不同的选项时覆盖 JLabels?

java - JAX-RS 和 CDI/@Provider 和 beans.xml

java - 撒克逊不同值抛出异常

java - 如何保持 executorService 运行?

java - 正确调整 JTable 的一列标题的大小

java - 使用 JTree 进行 Swing Action

java - 重绘不会更新屏幕

java - 在 EditText 上使用 toString() 方法会导致应用程序崩溃