【问题标题】:How to display an Image to component?如何将图像显示到组件?
【发布时间】:2011-09-14 11:09:14
【问题描述】:

如何使用BufferedImageJPanelJLabel 显示图像? 我使用FileChooser 加载图像,我需要显示我已加载的内容。 我不会将我的课程扩展到任何容器。

【问题讨论】:

    标签: java image swing jpanel bufferedimage


    【解决方案1】:

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

    现在您可以在 JLabel 中使用 ImageIcon 或在 JPanel 中添加它。


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

    【讨论】:

    • @mre:不。我的意思是paintComponents。我不确定paintComponent 是否会产生相同的效果。
    • +1 表示两种方法;但@mre 是正确的,您应该覆盖paintComponent() 并调用super.paintComponent()
    • @mre:根据您的建议更新答案。感谢您更新我的错误。还要感谢 trahsgod 和 kleopatra。
    猜你喜欢
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 2021-06-01
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多