#java #swing #jframe #imageicon
Вопрос:
Я пытаюсь установить значок в левом верхнем углу для своего окна. но, похоже, это не работает.. как вы думаете, в чем, по-вашему, проблема? Я также попытался установить значок и текст на экземпляре JLabel, но вышел только текст.
Ссылка представляет собой скриншот для вывода JFrame, который я сделал.
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
, есть ли способ сделать его коротким?