Как отобразить изображение на компонент? - PullRequest
2 голосов
/ 14 сентября 2011

Как вывести изображение на JPanel или JLabel с помощью BufferedImage?Я загружаю изображение, используя FileChooser, и мне нужно отобразить то, что я загрузил.Я не распространяю свой класс ни на один контейнер.

1 Ответ

3 голосов
/ 14 сентября 2011

Переопределить paintComponents (g) paintComponent(g) методом JPanel или JLabel и нарисовать в нем изображение.Примерно так:

    JPanel panel = new JPanel(){
        @Override
        public void paintComponent(Graphics g) {
            BufferedImage image = null; // get your buffered image.
            Graphics2D graphics2d = (Graphics2D) g;
            graphics2d.drawImage(image, 0, 0, null);
            super.paintComponents(g);
        }
    };

То же самое для JLabel.Или по-другому:

    BufferedImage image = null; // get your buffered image.
    ImageIcon icon = new ImageIcon((Image)image);
    JLabel label = new JLabel();
    label.setIcon(icon);

Поскольку вы говорите, что загружаете изображение из FileChooser, это можно сделать следующим образом:

    ImageIcon icon = new ImageIcon(
              fileChooser.getCurrentDirectory().toString()
              +"/"+fileChooser.getSelectedFile().getName());

Теперь вы можете использовать ImageIcon вJLabel или добавьте его в JPanel.


Выше приведен пример кода, который не тестировался, поэтому его не нужно запускать без ошибок.Возможно, вам придется изменить его в соответствии с вашими потребностями.

...