java - 如何向组件显示图像?

标签 java image swing jpanel bufferedimage

如何使用 BufferedImage 将图像显示到 JPanelJLabel? 我使用 FileChooser 加载图像,并且需要显示已加载的内容。 我不会将我的类扩展到任何容器。

最佳答案

重写 JPanel 或 JLabel 的 paintComponents(g) paintComponent(g) 方法并在其中绘制图像。类似如下:

    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());

现在您可以在 JLabel 中使用 ImageIcon 或将其添加到 JPanel 中。


以上代码是示例代码,未经测试,因此不必运行无错误。您可能需要根据需要更改它。

关于java - 如何向组件显示图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7415335/

相关文章:

css - 使图像高度响应

JAVA JFrames : Spacebar resets my game

java - @JsonIgnoreProperties( {"hibernateLazyInitializer", "handler"}) 有什么作用?

image - 是否可以使用 FFMPEG 在视频的每一帧上叠加图像

java - KOTLIN/JAVA 从对象列表中删除对象的一些属性

html - 由具有绝对定位的图像定义的 Div 高度?

java - 设置固定在 JPanel 中的 JTextField 的大小

java - ArrayIndexOutOfBoundsException - 设置 columnHeaders 时

Java内存方法

java - Selenium 无法在找到的元素中发送键