Originariamente inviato da Daikin
Image img = new ImageIcon("My.jpg").getImage();
int width = img.getWidth(null);
int height = img.getHeight(null);

mi ha restituito 200*200 faccio altri test....

che cosa intendi per caricamento asincrono o meno ?
Come hai fatto il caricamento è "sincrono", terminato il costruttore di ImageIcon, la immagine è "completa".
La documentazione di ImageIcon infatti dice: "Images that are created from a URL, filename or byte array are preloaded using MediaTracker to monitor the loaded state of the image."

Originariamente inviato da Daikin
come posso fare un controllo sull'estensione del file ? ad esempio se è .txt si deve rifiutare di aggiungere il file...
codice:
if (nome.endsWith(".gif") || nome.endsWith(".png")) {
    // ... ok ...
}
Questo è il modo più semplice. Se vuoi accettare gif/GIF/Gif ecc... basta portare prima nome in lower-case ( toLowerCase() ).