Impostare un'immagine in background su un JPanel non è un'impostazione difficile.

Ci bastano un BufferedImage e ImageIO.

Vediamo un esempio di JPanel che richiede nel costruttore un oggetto File (l'immagine appunto).

Nell'esempio non ho fatto un controllo sulla effettiva esistenza del file; quello mettetelo dove meglio credete nella vostra applicazione.

Vediamo una piccola classe, con un solo metodo, per il resize delle immagini in Java.

Ci stanno anche diverse librerie esterne per fare questo, ma su consiglio del forum HTML.it, ho usato gli strumenti standard.

Nello specifico getScaledInstance di Image, che consente queste tre possibilità:

  • impostare altezza e larghezza
  • impostare la larghezza a far calcolare automatica l'altezza
  • impostare l'altezza e far calcolare automaticamente la larghezza

Infatti se facciamo questo, la larghezza verrà calcolata in automatico:

ImageResize ir = new ImageResize();
try {
      ir.resizeImage(new File("immagine.jpg"), "path/to/save/", -1, 800);
} catch (IOException ex) {
      JOptionPane.showMessageDialog(this, ex.getMessage());
}

In pratica abbiamo passato un valore negativo come larghezza (accetta -1).