Originariamente inviato da mkd_
Se non sbaglio dovrebbe essere corretto: il secondo JPanel disegna su se stesso, e il primo JPanel si limita a passare a grafico.draw il graphics di una immagine che verrà poi assegnata al secondo JPanel, che la disegnerà su se stessa
Secondo me non è ancora corretto.
Mi domando perchè effettui queste operazioni:
codice:
//Graphics2D schermo=(Graphics2D) 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(); 
  long start=System.nanoTime(); 
  grafico.draw(imgGrafico,imgVolumi,mouseX,mouseY); 
  long end=System.nanoTime(); 
  grafico.pannelloGrafico.setImg(immagineGrafico);
dentro al paintComponent() di un componente che non vuoi modificare.

Il metodo paintComponent() va ridefinito solo e soltanto se devi ridisegnare il componente stesso. Cioè, solo e soltanto se devi modificare l'oggetto Graphics del componente stesso.

Tu non lo tocchi nemmeno l'oggetto Graphics, che hai chiamato "schermo".

Tutto ciò che non riguarda il disegno del componente non ci deve stare dentro al paintComponent(). Ergo... tutte quelle operazioni le dovresti spostare da qualche altra parte, in modo che non coinvolgano il sistema di disegno del componente.

Non puoi incapsulare "logica di programmazione" dentro ad un metodo che si deve occupare solo e soltanto del disegno di se stesso.

Io non conosco la logica di funzionamento della tua applet, ma quelle operazioni non vanno fatte là dentro.


Ciao.