Привет! установка ImageIcon на Jframe и другие компоненты, похоже, не работают. Мне нужна помощь, пожалуйста

#java #swing #jframe #imageicon

Вопрос:

Я пытаюсь установить значок в левом верхнем углу для своего окна. но, похоже, это не работает.. как вы думаете, в чем, по-вашему, проблема? Я также попытался установить значок и текст на экземпляре JLabel, но вышел только текст.

Ссылка представляет собой скриншот для вывода JFrame, который я сделал.

https://i.stack.imgur.com/1FDh6.png

 public class Window extends JFrame{
    
    private final int WIDTH  = 600;

    public Window(){
    // Setting the Window
        setTitle("Module Organizer");
        ImageIcon img = new ImageIcon("checkmark-square.png");
        setIconImage(img.getImage());
        setSize(WIDTH,(WIDTH*3)/4);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());

        // adding components
        
        add(new NavPane(), BorderLayout.WEST);
        
        setVisible(true);
    }

}
 

Комментарии:

1. Не публикуйте изображение всего рабочего стола. Ваш вопрос касается вашего кадра, поэтому отображайте только кадр, чтобы мы могли видеть, как он выглядит. Если значок рамки не меняется, то, вероятно, это связано с неправильным именем файла. Исходя из вашего кода, изображение должно находиться в том же каталоге, что и файл вашего класса. Попробуйте использовать ImageIO для чтения изображения. Если изображение не найдено, вы получите сообщение об ошибке. Также не называйте вас классом «Окно». Существует класс AWT с таким именем, поэтому он сбивает с толку. Имена классов должны быть более описательными.

2. Извините, я здесь новенькая. Я буду иметь это в виду в следующий раз. кстати, я поместил файл изображения в тот же каталог, что и файл класса, а также проверил имя файла, и он кажется нормальным. я попробую ImageIO, как вы предлагаете..

3. Кроме того, не редактируйте свой вопрос с помощью кнопки «назад» в браузере. Ты просто стер все изменения, которые я внес в твой вопрос, чтобы отобразить изображение. Если вам нужно отредактировать свой вопрос, то сначала нажмите на ссылку «Редактировать».

Ответ №1:

Вот код

  import javax.swing.JFrame;
 import javax.swing.ImageIcon;
 import javax.swing.JPanel;
 import javax.swing.JLabel;
 public class Window{
 JFrame f=new JFrame("Test");
 public Window(){
 JPanel j=new JPanel();

 f.setSize(1000,500);
 ImageIcon img = new ImageIcon("Image.jpg");
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 JLabel l=new JLabel(img);
 j.add(l);
 f.add(l);
 f.setVisible(true);
}
 public static void main(String[] args) {
    new Window();
}
 }
 

Комментарии:

1. ПРИМЕЧАНИЕ:Вы также можете удалить jpanel, так как он не играет никакой роли в ответе

2. На моем это все равно не подействовало.. как вы думаете, это в IDE?? потому что я использую vscode в качестве редактора.. или, может быть, версию java? потому что я использую java se16..

3. Я использовал возвышенное, и оно отлично работало

4. Я нашел решение с помощью ImageIO, но мне нужно вставить весь путь.. например, такой длинный C:UsersHPDesktopCodesJavaCalculatoralert-circle.png , есть ли способ сделать его коротким?