Как обновить JLabel, в котором хранится изображение

#java #forms #image #swing

#java #формы #изображение #swing

Вопрос:

Я пытаюсь загрузить определенные изображения через JButton.

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

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

Использование JLabel — лучший способ сохранить и отобразить изображение?

Можно ли изменить размер фотографии?

Спасибо


 package fotoMatricula;

import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class FotoMatricula {

private JFrame frame;
private JTextField textField;
private String foto;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                FotoMatricula window = new FotoMatricula();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public FotoMatricula() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
public void initialize() {
    Image image = null;
    try {
        URL url = new URL("https://charal.unacar.mx/fotos/103522.jpg");
        image = ImageIO.read(url);
    } catch (IOException e) {
        e.printStackTrace();
    }

    frame = new JFrame();
    frame.setBounds(100, 100, 391, 396);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    JLabel lblIntroduceTuMatrcula = new JLabel("Introduce tu matru00EDcula");
    lblIntroduceTuMatrcula.setFont(new Font("Tahoma", Font.PLAIN, 17));
    lblIntroduceTuMatrcula.setBounds(104, 11, 174, 24);
    frame.getContentPane().add(lblIntroduceTuMatrcula);

    textField = new JTextField();
    textField.setBounds(139, 46, 94, 20);
    frame.getContentPane().add(textField);
    textField.setColumns(10);

    JLabel lblNewLabel = new JLabel(new ImageIcon(image));
    lblNewLabel.setBounds(89, 77, 202, 189);
    frame.getContentPane().add(lblNewLabel);


    JButton btnBuscar = new JButton("Buscar");
    btnBuscar.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            foto = textField.getText();
            lblNewLabel.setText(foto);
        }
    });
    btnBuscar.setBounds(139, 303, 89, 23);
    frame.getContentPane().add(btnBuscar);
    }
}
  

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

1. Чтобы изменить значок JLabel, вы можете использовать setIcon(...) метод метки.

2. Я действительно пробовал это примерно 10 минут назад, когда я нажимаю кнопку, изображение по умолчанию исчезает, и все, новое изображение не загружается: (Я ввел System.out.println, чтобы проверить, правильный ли URL-адрес, и это

Ответ №1:

Сделайте это, как вы делали через инициализацию… Попробуйте это в вашем ActionListener:

  try
 {
     URL url2 = new URL (textField.getText());
     lblNewLabel.setIcon(new ImageIcon(ImageIO.read(url2)));
 }
 catch (Exception e)
 {

 }
  

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

1. На самом деле я решил это примерно 10 минут назад! Используя именно то, что вы написали, спасибо за ответ! Я также добавил это, чтобы изменить размер изображения new ImageIcon(imagen.getScaledInstance(324, 455, imagen. SCALE_SMOOTH)));

2. @ David: Нет проблем! Подумайте о том, чтобы принять этот ответ, потому что он решает вашу проблему (даже если вы получили ее самостоятельно). Это может помочь другим..