2015-04-08 3 views
-1

Я создал для школьного проекта, «защитника паролем» следующий код, просто для удовольствия. Однако проблема заключается в том, что изображение значка не отображается, а вместо этого используется java «чашка кофе».Использование изображения значка для GUI

import javax.swing.*; 

import java.awt.*; 
import java.awt.event.*; 

public class UserInterfaceGUI extends JFrame 
{ 
    private static final long serialVersionUID = 1; 
    private JLabel userNameInfo; // ... more unimportant vars. 

    public UserInterfaceGUI() 
    { 
     this.setLayout(new FlowLayout()); 
     userNameInfo = new JLabel("Enter Username:"); // ... more unimportant var. declartions 

     this.add(userNameInfo); // ... more unimportant ".add"s 

     event e = new event(); 
     submit.addActionListener(e); 
    } 

    public static void main(String[] args) 
    { 
     //This icon has a problem \/ 
     ImageIcon img = new ImageIcon("[File Location hidden for privacy]/icon.ico"); 

     UserInterfaceGUI gui = new UserInterfaceGUI(); 
     gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     gui.setSize(400, 140); 
     gui.setIconImage(img.getImage()); 
     gui.setTitle("Password Protector"); 
     gui.setVisible(true); 
    } 
} 

Может кто-нибудь сказать мне, почему это только показывает чашку кофе Java в нижней части экрана и на панели в верхней части окна?

+2

Не уверен, что java может читать файл «.ico». Попробуйте использовать изображение .jpg или .gif. – camickr

+0

Вы уверены, что ваш ImageIcon полностью инициализирован (ошибка на пути?) @Camickr вы правы, см. Http://stackoverflow.com/questions/12185768/does-swing-support-ico-files –

+0

Это не собирается решите свою проблему, но вместо этого используйте ['setIconImages'] (http://docs.oracle.com/javase/8/docs/api/java/awt/Window.html#setIconImages-java.util.List-) который позволяет определять изображения разных разрешений – Robin

ответ

3

Есть два возможных проблем здесь:

  1. Java вряд ли поддержит .ico файлы. Единственными типами, на которые можно положиться, являются GIF, PNG & JPEG.

    Для всех типов, поддерживаемых на любой конкретной JRE, используйте ImageIO.getReaderFileSuffixes() (но, к сожалению, для приложений иконки придерживаются 3 типов с гарантированной поддержкой).
  2. Код пытается загрузить ресурс приложения в файл, когда он, вероятно, будет (или станет) , к которому должен обращаться по URL-адресу. См. embedded resource info. page, чтобы узнать, как формировать URL-адрес.
Смежные вопросы