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!