Salve a tutti.
Come dedurrete dal titolo, vorrei assegnare al mio programma un icona al posto della solita icona java standard che appare quando apro il software.
Spulciando tra le API Java 8 e cercando un po' nella rete, ho capito che per fare questo ho bisogno di importare java.awt.Image e java.awt.Toolkit
Quello che non ho capito è il metodo:
Image immagineIc=Toolkit.getDefaultToolkit().getImage();
frame.setIconImage(immagineIc);
Mi spiego meglio:
Il programma, che è un banalissimo frame, una volta compilato prenderò il suo file.jar e lo incapsulerò in un estensione .app (perché sto lavorando su OSX).
Come faccio a dirgli che l'icona da eseguire si trova nella stessa Directory in cui si trova il file.jar?
Vi faccio vedere anche il codice per intero in modo da poter fornire ogni singolo dettaglio:
import javax.swing.JFrame;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JPanel;
import java.awt.Container;
import java.awt.BorderLayout;
public class MySoft
{
public static void main(String[] args) {
//**Costruzione del Frame**//
JFrame frame = new JFrame("My Software");
frame.setSize(400, 400);
frame.setLocation(800, 300);
//**Icona**//
???
//**Creazione del bottone**//
JButton button = new JButton("OK");
//**Azione del bottone**//
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
frame.dispose();
}
});
//**Creazione del pannello**//
JPanel panel = new JPanel();
//**Inserimento bottone nel contenitore pane con BorderLayout**//
Container pane = frame.getContentPane();
pane.add(button, BorderLayout.PAGE_END);
//**Inserimento pannello con bottone nel frame**//
frame.add(panel);
//**Impostazione di visibilità del frame all'apertura**//
frame.setVisible(true);
//**Modalità di chiusura del frame**//
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}