Tengo un JFrame
que muestra un icono de Java en la barra de título (esquina izquierda). Quiero cambiar ese icono a mi icono personalizado. ¿Cómo debería hacerlo?Cómo cambiar el icono de JFrame
Respuesta
Crear un nuevo ImageIcon
objeto como éste:
ImageIcon img = new ImageIcon(pathToFileOnDisk);
luego otra vez en su JFrame
con setIconImage()
:
myFrame.setIconImage(img.getImage());
también comprobación setIconImages()
que toma un List
lugar.
¿Cuál debería ser el tamaño del ícono? ... voy a crear uno ahora .. – Anand
Consulte aquí para obtener información interesante sobre el tamaño: http://www.coderanch.com/t/343726/Swing-AWT-SWT-JFace/ java/Frame-s-setIconImage-optimum-image – BFree
Puede haber diferentes valores de tamaño necesarios: [Tamaños de los iconos de cuadro utilizados en Swing] (http://stackoverflow.com/q/18224184/3453226) –
JFrame.setIconImage(Image image)
bastante estándar.
Estas soluciones no funcionan. –
Aquí es cómo lo hago:
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import java.io.File;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class MainFrame implements ActionListener{
/**
*
*/
/**
* @param args
*/
public static void main(String[] args) {
String appdata = System.getenv("APPDATA");
String iconPath = appdata + "\\JAPP_icon.png";
File icon = new File(iconPath);
if(!icon.exists()){
FileDownloaderNEW fd = new FileDownloaderNEW();
fd.download("http://icons.iconarchive.com/icons/artua/mac/512/Setting-icon.png", iconPath, false, false);
}
JFrame frm = new JFrame("Test");
ImageIcon imgicon = new ImageIcon(iconPath);
JButton bttn = new JButton("Kill");
MainFrame frame = new MainFrame();
bttn.addActionListener(frame);
frm.add(bttn);
frm.setIconImage(imgicon.getImage());
frm.setSize(100, 100);
frm.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
y aquí está el programa de descarga:
import java.awt.GridLayout;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
public class FileDownloaderNEW extends JFrame {
private static final long serialVersionUID = 1L;
public static void download(String a1, String a2, boolean showUI, boolean exit)
throws Exception
{
String site = a1;
String filename = a2;
JFrame frm = new JFrame("Download Progress");
JProgressBar current = new JProgressBar(0, 100);
JProgressBar DownloadProg = new JProgressBar(0, 100);
JLabel downloadSize = new JLabel();
current.setSize(50, 50);
current.setValue(43);
current.setStringPainted(true);
frm.add(downloadSize);
frm.add(current);
frm.add(DownloadProg);
frm.setVisible(showUI);
frm.setLayout(new GridLayout(1, 3, 5, 5));
frm.pack();
frm.setDefaultCloseOperation(3);
try
{
URL url = new URL(site);
HttpURLConnection connection =
(HttpURLConnection)url.openConnection();
int filesize = connection.getContentLength();
float totalDataRead = 0.0F;
BufferedInputStream in = new BufferedInputStream(connection.getInputStream());
FileOutputStream fos = new FileOutputStream(filename);
BufferedOutputStream bout = new BufferedOutputStream(fos, 1024);
byte[] data = new byte[1024];
int i = 0;
while ((i = in.read(data, 0, 1024)) >= 0)
{
totalDataRead += i;
float prog = 100.0F - totalDataRead * 100.0F/filesize;
DownloadProg.setValue((int)prog);
bout.write(data, 0, i);
float Percent = totalDataRead * 100.0F/filesize;
current.setValue((int)Percent);
double kbSize = filesize/1000;
String unit = "kb";
double Size;
if (kbSize > 999.0D) {
Size = kbSize/1000.0D;
unit = "mb";
} else {
Size = kbSize;
}
downloadSize.setText("Filesize: " + Double.toString(Size) + unit);
}
bout.close();
in.close();
System.out.println("Took " + System.nanoTime()/1000000000L/10000L + " seconds");
}
catch (Exception e)
{
JOptionPane.showConfirmDialog(
null, e.getMessage(), "Error",
-1);
} finally {
if(exit = true){
System.exit(128);
}
}
}
}
'imgicon.getImage() 'es lo que necesitaba gracias – shareef
Aquí es una alternativa que funcionó para mí:
yourFrame.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource(Filepath)));
Es muy similar a la respuesta aceptada.
El único que responde cómo usar la imagen si es un recurso. : D –
Desafortunadamente, la solución anterior no funcionaba para el plugin Jython Fiji. Tuve que usar getProperty para construir dinámicamente la ruta relativa.
Esto es lo que funcionó para mí:
import java.lang.System.getProperty;
import javax.swing.JFrame;
import javax.swing.ImageIcon;
frame = JFrame("Test")
icon = ImageIcon(getProperty('fiji.dir') + '/path/relative2Fiji/icon.png')
frame.setIconImage(icon.getImage());
frame.setVisible(True)
Apenas añada el siguiente código:
setIconImage (nueva ImageIcon (PathOfFile) .getImage());
Esto hizo el truco en mi caso super
o this
referes a JFrame
en mi clase
URL url = getClass().getResource("gfx/hi_20px.png");
ImageIcon imgicon = new ImageIcon(url);
super.setIconImage(imgicon.getImage());
No necesita el super o esto en su caso. Puedes dejarlo fuera. – creativecreatorormaybenot
puede estar en lo cierto, depende de su diseño de herencia – shareef
Si amplía su clase, no es realmente necesario. – creativecreatorormaybenot
Agregue el código siguiente en el constructor de este modo:
public Calculator() {
initComponents();
//the code to be added this.setIconImage(newImageIcon(getClass().getResource("color.png")).getImage()); }
Cambio "color.png" al nombre de archivo de la imagen que desea insertar. Arrastre y suelte esta imagen en el paquete (en Paquetes de origen) de su proyecto.
Ejecute su proyecto.
- 1. ¿Cómo cambiar el icono de un JLabel?
- 2. Cambiar el icono de un archivo .JAR
- 3. ¿Cómo cambiar el icono ejecutable desde el código C#? (no es mi icono de la aplicación)
- 4. cómo cambiar el icono de menú de desbordamiento de Android
- 5. Cómo cambiar el icono/emblema de un directorio de fiesta
- 6. Javascript - Cambiar icono de alerta
- 7. Cómo cambiar el icono de un botón mediante programación?
- 8. ¿Cómo puedo cambiar el icono TreeView en un icono de carpeta?
- 9. ¿Cómo cambiar el icono del archivo jar ejecutable?
- 10. ¿Cómo cambiar el icono del archivo .bat programáticamente?
- 11. ¿Cómo cambiar el icono del cursor en Java?
- 12. ¿Cómo cambiar el color del icono tabbar del azul predeterminado?
- 13. ¿Es posible cambiar el icono de la barra de estado (icono de notificación) dinámicamente?
- 14. Eliminar ícono JFrame predeterminado
- 15. Cambiar el icono de instalación del complemento de Firefox
- 16. Eclipse EE: cambiar icono de ejecución
- 17. ¿Puedo cambiar el icono de la aplicación programáticamente?
- 18. Cambiar el icono predeterminado en una aplicación de Windows Forms
- 19. cómo cambiar Qt qListView selección de icono resaltar
- 20. ¿Cómo enfocar un JFrame?
- 21. Cómo TDD un JFrame?
- 22. ¿Cómo cambiar el nombre o el icono de forma programática de la vista de Eclipse?
- 23. Cómo deshabilitar JFrame principal cuando abre nuevo JFrame
- 24. JFrame sin borde de marco, botón máximo, botón mínimo e icono de marco
- 25. jQuery UI button: ¿cómo cambiar el estilo y el icono de los botones marcados?
- 26. ¿Cómo agregar compatibilidad para cambiar el tamaño cuando se utiliza un JFrame no decorado?
- 27. Establecer el color de fondo para JFrame
- 28. Cómo cambiar el icono de QPushButton usando hojas de estilo en la aplicación Qt
- 29. Cómo cambiar las ventanas Icono predeterminado de la aplicación en el proyecto de instalación
- 30. ¿Cómo cambiar dinámicamente el icono jQueryUI de un botón después de la inicialización?
Apuesto a que en la mayoría de los casos esas personas ni siquiera han oído hablar de la API. Probablemente la mejor solución en casos como este es proporcionar un enlace a la API con la respuesta. – Carlos