Как отобразить изображение в приложении Java
Я хочу отобразить изображение в своем приложении Java. Я нашел код для загрузки изображения с веб-сервера и его отображения в jframe.
Я хочу использовать ярлык, чтобы показать изображение или что-то еще. Это не должно быть JFrame.
Вот мой код:
Image image = null;
try {
URL url = new URL(
"http://www.personal.psu.edu/acr117/blogs/audrey/images/image-2.jpg");
image = ImageIO.read(url);
} catch (IOException e) {
}
// Use a label to display the image
JFrame frame = new JFrame();
JLabel lblimage = new JLabel(new ImageIcon(image));
frame.getContentPane().add(lblimage, BorderLayout.CENTER);
frame.setSize(300, 400);
frame.setVisible(true);
Может кто-нибудь мне помочь?
Ответы
Ответ 1
Используя предоставленный код, у вас уже есть изображение в JLabel
, называемом lblimage
. Теперь вы можете добавить это к панели или к любому другому контейнеру, например:
JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(lblimage);
// add more components here
frame.add(mainPanel);
frame.setVisible(true);
Вы можете обработать эту метку (lblimage
) так же, как и любой нормальный компонент.
Ответ 2
Вместо этого вы можете попробовать:
import javax.swing.ImageIcon;
...
JLabel image = new JLabel(new ImageIcon("imageName.png"));
...
frame.add(image);
Я считаю, что это намного проще сделать: D
РЕДАКТИРОВАТЬ: прочитав вопрос в 4-й раз, я понял, что это именно то, что вы сделали в этом вопросе. Теперь мне трудно понять, что именно вы просите.
Ответ 3
Я бы добавил две заметки к другим полезным ответам:
1) Не проглатывайте исключения; записывать в журнал или, по крайней мере, печатать трассировку стека.
catch (IOException e) { e.printStackTrace(); }
2) Вместо записи frame.setSize(300, 400)
используйте pack()
, который "вызывает этот Window
размер, соответствующий предпочтительный размер и макеты его подкомпонентов". Таким образом, будут использованы оригинальные размеры изображения. Это также является основанием предложения @camickr для ознакомления с менеджерами макетов.
Ответ 4
и я хочу добавить все больше и больше предметов (кнопки и метки) в мой графический интерфейс. Можно вы, пожалуйста, помогите мне
Ваш вопрос не имеет ничего общего с ярлыками и изображениями. Вам нужно понять, как использовать Менеджеров макетов для организации компонентов, которые вы добавляете в фрейм.
Итак, начните с чтения руководства Swing в Менеджеры макета. Есть много примеров, с которыми вы можете скачать и играть. Также вы можете вставлять разные менеджеры макетов на разные панели.
Ответ 5
Ваш код уже делает то, что вам нужно (чтобы отобразить его в другом, чем JFrame, - это JLabel -)
Для того, что вы говорите в своих комментариях, чтобы попытаться перетащить и добавить дополнительные компоненты, я думаю, что вам нужно использовать GUI BUilder для достижения того, что вы хотите (что не только отображает изображение, но и добавляет другие компоненты)
Я бы рекомендовал вам использовать IntelliJ IDEA GUI Builder
Чтобы получить полный обзор того, как работает Swing, и что вы можете с ним, вы также можете взглянуть на: Учебник по качанию
Ответ 6
Попробуйте следующее:
JLabel lblNewLabel_1 = new JLabel("");
lblNewLabel_1.setIcon(new ImageIcon(MainMenu.class.getResource("/Images/Bugs.png")));