[Risolto] Modificare l'icona di un JFrame

di il
6 risposte

[Risolto] Modificare l'icona di un JFrame

Buongiorno,
sono nuovo in questo forum e in Java.
Sono un vecchio programmatore in linguaggi di terza generazione e in VB6.

Tra le varie prove ed esercizi che sto facendo per imparare java, vorrei impostare l'icona di una finestra (javax.swing.JFrame) con una personalizzata.
Cercando in rete ho trovato quanto riporto di seguito.

Usando un metodo che contiene queste istruzioni, icoFile risulta esistere, infatti fe = true.

import java.io.File;

String icoFile = System.getProperty("user.dir") + "NomeIcona.ICO";
File myChan = new File(icoFile);
boolean fe = myChan.exists();                 
return fe;
Se invece utilizzo:

import java.awt.Toolkit;

String icoFile = System.getProperty("user.dir") + "NomeIcona.ICO";
Image imc = Toolkit.getDefaultToolkit().getImage(icoFile);
System.out.println("imc = " + imc.toString();
il risultato è del tipo:
imc = sun.awt.image.ToolkitImage@4d2a9eda

e la:

this.setIconImage(imc);
non modifica l'icona della JFrame.

Qualcuno sa dirmi cosa sbaglio?

6 Risposte

  • Re: [Risolto] Modificare l'icona di un JFrame

    Prova con
    ImageIcon img = new ImageIcon(pathToFileOnDisk);
    myFrame.setIconImage(img.getImage());
  • Re: [Risolto] Modificare l'icona di un JFrame

    Grazie per la risposta patel.

    Nemmeno così funziona.
    Però per favore, chiariscimi una cosa:
    Con "myFrame" intendi il nome della classe dichiarata così?
    public class myFrame extends javax.swing.JFrame {
    Aggiungo che queste istruzioni le sto provando nel costruttore della classe principale dichiarata come sopra.

    Io sto usando NetBeans e se uso direttamente il nome della classe mi da errore su:
    myFrame.setIconImage(img.getImage());
    ovvero devo usare:
    myFrame.this.setIconImage(img.getImage());
    oppure:
    this.setIconImage(img.getImage());
    ma l'icona non cambia.

    Non è che per caso java non riconosce il file .ico e vuole qualche altro formato?
  • Re: [Risolto] Modificare l'icona di un JFrame

    Con myframe intendo il jframe di cui vuoi modificare l'icona, forse se posti l'intero codice ci capiamo meglio.
    Edit:
    usa una immagine jpg
  • Re: [Risolto] Modificare l'icona di un JFrame

    Eccomi!
    Purtroppo in questo periodo sono all'estero e ho pochissimo tempo a disposizione.
    Siccome il progetto che stavo usando era un casino, ne ho creato uno nuovo riportando solo gli elementi essenziali.
    Lo riporto qua come codice, così se hai voglia lo puoi anche provare.
    import java.io.File;
    import javax.swing.ImageIcon;
    
    public class ProvaIconaFrm extends javax.swing.JFrame {
      public ProvaIconaFrm() {
        this.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
        this.setTitle("Prova icona");
        this.setSize(300,300);
        String icoFile = System.getProperty("user.dir") + "\\NomeIcona.ico";
        File myChan = new File(icoFile);
        if (myChan.exists()) {                // Verifico se il file esiste.
          System.out.println("Il file " + icoFile + " esiste.");
          ImageIcon myIcon = new ImageIcon(icoFile);
          this.setIconImage(myIcon.getImage());
        } else {
          System.out.println("File " + icoFile + " non trovato.");
        }                 
      }
      public static void main(String[] args) {
        try {
          for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
              javax.swing.UIManager.setLookAndFeel(info.getClassName());
              break;
            }
          }
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
          java.util.logging.Logger.getLogger(ProvaIconaFrm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
    //                                                    Create and display the form.
        java.awt.EventQueue.invokeLater(new Runnable() {
          public void run() {
             new ProvaIconaFrm().setVisible(true);
          }
        });
      }
    }
    Ovviamente il file esiste, ma l'icona non cambia.

    Qualche dritta?
  • Re: [Risolto] Modificare l'icona di un JFrame

    patel ha scritto:


    Con myframe intendo il jframe di cui vuoi modificare l'icona, forse se posti l'intero codice ci capiamo meglio.
    Edit:
    usa una immagine jpg
    Come ti ho già detto prova con un jpg, anche a me non riconosce ico
  • Re: [Risolto] Modificare l'icona di un JFrame

    Ma pensa te quanto sono rinco!
    Avevo capito che intendevi farmi postare il codice tramite un allegato jpg

    Inoltre avrei potuto pensare da me stesso medesimo di provare con altri formati, invece mi ero intestardito a provare con una ico perché si trattava di un'icona...

    Comune ora FUNZIONA!!!

    Per la cronaca funziona con: jpg, png e gif
    NON funziona con: ico e bpm

    Grazie mille.
Devi accedere o registrarti per scrivere nel forum
6 risposte