Как отобразить изображение в приложении Java - PullRequest
10 голосов
/ 31 мая 2010

Я хочу отобразить изображение в моем приложении 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);

Может ли кто-нибудь мне помочь?

Ответы [ 6 ]

4 голосов
/ 31 мая 2010

Используя предоставленный вами код, у вас уже есть изображение в JLabel с именем lblimage. Теперь вы можете добавить это к панели или любому другому объекту контейнера, например так:

JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(lblimage);
// add more components here
frame.add(mainPanel);
frame.setVisible(true);

Вы можете обращаться с этим ярлыком (lblimage) так же, как с любым обычным компонентом.

3 голосов
/ 31 мая 2010

Вы можете попробовать сделать это вместо:

import javax.swing.ImageIcon;
...
JLabel image = new JLabel(new ImageIcon("imageName.png"));
...
frame.add(image);

Я считаю, что это сделать намного проще: D

РЕДАКТИРОВАТЬ: Прочитав вопрос в 4-й раз, я понял, что это именно то, что вы сделали в вопросе. Теперь у меня проблемы с выяснением того, что именно вы просите.

2 голосов
/ 31 мая 2010

Я бы добавил две заметки к другим полезным ответам:

1) Не глотайте исключения; записать в журнал или хотя бы распечатать трассировку стека.

catch (IOException e) { e.printStackTrace(); }

2) Вместо записи frame.setSize(300, 400) используйте pack(), который «заставляет размер Window соответствовать предпочтительному размеру и расположению его подкомпонентов» Таким образом, будут использованы исходные размеры изображения. Это также основание для предложения @ camickr прочитать о менеджерах по раскладке.

1 голос
/ 14 января 2013

Попробуйте это:

JLabel lblNewLabel_1 = new JLabel("");
lblNewLabel_1.setIcon(new ImageIcon(MainMenu.class.getResource("/Images/Bugs.png")));
1 голос
/ 31 мая 2010

Ваш код уже делает то, что вам нужно (отображать его не в JFrame - это JLabel -)

Для того, что вы говорите в своих комментариях, чтобы попытаться перетащить и добавить больше компонентов, я думаю, что вам нужно, это использовать GUI BUilder для достижения того, что вы хотите (который не только показывает изображение, но добавляет другие компоненты)

Я бы порекомендовал вам использовать IntelliJ IDEA GUI Builder

Чтобы получить полный обзор того, как работает Swing и что вы можете с ним сделать, вы также можете взглянуть на: Учебник по Swing

1 голос
/ 31 мая 2010

и я хочу добавить все больше и больше предметов (кнопки и метки) в мой графический интерфейс. Можно пожалуйста, помогите мне

Ваш вопрос не имеет ничего общего с ярлыками и изображениями. Вам необходимо понять, как использовать менеджеры по расположению для организации компонентов, добавляемых в кадр.

Итак, начните с чтения учебного пособия по Swing на Layout Managers . Есть много примеров, которые вы можете скачать и поиграть. Также на разных панелях можно вкладывать разные менеджеры компоновки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...