Ciao a tutti, ho un piccolo problema e per quanto mi sforzi non riesco a trovare una spiegazione/soluzione.
Sono riuscito a caricare delle immagini da un jar con l'oggetto Toolkit, il problema,penso, è quando richiamo l'oggetto ImageButton entra nel costruttore ma non riesce a recuperare le dimensioni delle immagini caricate.
codice:
protected void init() {
setSize(300,200);
addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent we) {
System.exit(0);
}
});
Image[] imgp = new Image[4];
Container contentPane = getContentPane();
JPanel p = new JPanel();
for(int i=0; i<4; i++) {
imgp[i] = Toolkit.getDefaultToolkit().createImage("it/praioz/image/babydonald0"+(i+1)+".gif");
}
for(int i=0; i<4; i++) {
System.out.print("imgp["+i+"] = " +imgp[i]);
System.out.println(" imgp["+i+"].getWidth(this) = " +imgp[i].getWidth(this) +"imgp["+i+"].getHeight(this)= "+imgp[i].getHeight(this) );
}
ImageButton imgButton = new ImageButton(imgp);
Button button = new Button("pippo");
ModelloTabella modello = new ModelloTabella();
JTable tabella = new JTable(modello);
JScrollPane scroll = new JScrollPane(tabella);
p.add( imgButton );
p.add( button );
p.setOpaque(true);
contentPane.add(p, "North");
contentPane.add(scroll, "Center");
pack();
doLayout();
}
qui sotto c'è la classe relativa alla costruzione del mio bottone
codice:
class ImageButton extends Button implements MouseListener {
Image[] img;
int select = 1;
int width = 0;
int height = 0;
int imgWidth, imgHeight;
public ImageButton(Image[] image) {
super(" ");
img = new Image[4];
img = image;
imgWidth = img[0].getWidth(this);
imgHeight = img[0].getHeight(this);
setSize(imgWidth, imgHeight);
addMouseListener(this);
}
public Dimension getPreferredSize() {
return new Dimension(imgWidth, imgHeight);
}
public Dimension getMinimumSize() {
return new Dimension(imgWidth, imgHeight);
}
public void setBounds(int x, int y, int width, int height) {
this.width = width;
this.height = height;
super.setBounds(x, y, this.width, this.height);
}
public void setSize(int width, int height) {
this.width = width;
this.height = height;
super.setSize(this.width, this.height);
}
public void setEnabled(boolean enable) {
if( enable )
select = 1;
else
select = 0;
repaint();
super.setEnabled(enable);
}
public void paint(Graphics g) {
g.drawImage(img[select], 0, 0, width, height, this);
}
public void mouseClicked(MouseEvent e) { }
public void mouseEntered(MouseEvent e) {
if(select != 0) {
select = 2;
repaint();
}
}
public void mouseExited(MouseEvent e) {
if(select != 0) {
select = 1;
repaint();
}
}
public void mousePressed(MouseEvent e) {
if(select != 0) {
select = 3;
repaint();
}
}
public void mouseReleased(MouseEvent e) {
if(select != 0) {
select = 2;
repaint();
}
}
}
un grazie a chiunque voglia aiutarmi!