Как отобразить изображение в приложении 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")));