Ho una JApplet che contiene un JPanel, che a sua volta ospita diversi componenti e altri due JPanel, sui quali vorrei disegnare due immagini.
Il problema è che le immagini vengono disegnate ad ogni chiamata di repaint(), ma una frazione di secondo dopo vengono sostituite dal classico colore di sfondo grigio del JPanel.
Il programma è troppo lungo per effettuare un copia/incolla, ecco le parti principali.
Le classi coinvolte nella grafica sono tre
ClassePrincipale extends JApplet
ChartWindow extends JPanel
Grafico
La parte grafica è strutturata come segue
ClassePrincipale
Nell' init()
codice:
finestraGrafica=new ChartWindow();
add(finestraGrafica)
ChartWindow
codice:
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);
}
Naturalmente grafico è un oggetto della classe Grafico.
grafico contiene due JPanel, che vengono aggiunti nel costruttore di ChartWindow assieme ad altri componenti
codice:
grafico=new Grafico()
................
add(grafico.pannelloGrafico);
add(grafico.pannelloVolumi);
Penso ci sia tutto. Ci sono stato diverse ore dietro ma senza risultati. Se pensate che manchi qualche informazioni scrivetemi senza problemi.
Grazie per la lettura