Ciao a tutti,
Volevo presentarvi un problema che mi sta capitando, con la speranza di un aiuto su come risolvere. Sto cercando di creare delle icone personalizzate che raffigurando un rettangolo di dimensione 200 x 200. Ho creato il main che con i metodi principali per creare la GUI così:
codice:
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ImageIconLabel
{
private JFrame f;
private MyIcon disegno, disegno2;
public ImageIconLabel()
{
f = new JFrame("Visualizzazione Immagine");
disegno = new MyIcon(10, 40);
disegno2 = new MyIcon(300, 300);
f.setContentPane(disegno); // l'etichetta personalizzata è inserita sul muro grezzo
f.setContentPane(disegno2); // l'etichetta personalizzata è inserita sul muro grezzo
f.setSize(1024,768);
f.setVisible(true);
f.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
}
public static void main(String [] args)
{
new ImageIconLabel();
}
} // fine applicazione
Ho creato successivamente la mia classe MyIcon che estende il componente generico JComponents e crea l'oggetto MyIcon con le coordinate appropriate per l'immagine. La classe ridefinisce anche il metodo protected "paintComponent()" di JComponent che ha il compito di disegnare la mia immagine personalizzata.
codice:
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
class MyIcon extends JComponent
{
private ImageIcon icon;
private String url="http://www.disi.unige.it/person/MoggiE/LI03/lez6/images/verde.gif";
private int x, y;
public MyIcon(int x, int y)
{
icon = new ImageIcon(path);
this.x = x;
this.y = y;
// cartella immagini in sottocartella con bytecode
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
icon.paintIcon(this, g, this.x, this.y); // disegno posizionato rispetto alla cornice
}
}
Tutto funziona se io creo un oggetto di tipo MyIcon, l'immagine viene disegnata nelle coordinate corrette, ma se creo due o più oggetti io visualizzo solo la seconda immagine, in questo caso l'oggetto disegno2. Come posso risolvere per poter disegnare più immagini contemporaneamente?
Grazie mille a tutti
Ciao