2301_76508755 2023-02-13 21:19 采纳率: 100%
浏览 37
已结题

在JLabel中显示图片

编写一个界面,包括1个按钮和1个JLabel控件,当点击按钮时,将从D盘读取图片cat.jpg,显示在JLabel控件中。
要求:对图片不存在,读取失败等情况做处理

只能写出来显示文字,不知道咋显示图片


package lecture25_2;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

class FrameDemo extends JFrame implements ActionListener {
    JLabel label1;
    JButton btn1;

    public FrameDemo(String title) {
        super(title);
        btn1 = new JButton("显示图片");
        label1 = new JLabel();
        add(label1);
        add(btn1);
        btn1.addActionListener(this);
        setLayout(new FlowLayout());
        setSize(400, 200);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == btn1) {
            label1.setText("1234");
        }
        // TODO Auto-generated method stub

    }

}

public class Test {
    public static void main(String[] args) {
        try {
            FileInputStream in = new FileInputStream("F:\\test.jpg");
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        FrameDemo frame = new FrameDemo("显示图片");

    }

}


  • 写回答

3条回答 默认 最新

  • weixin_52470668 2023-02-14 05:53
    关注

    这是一份使用 Java 实现此需求的代码:

    
    ```java
    
    
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    
    public class ImageDisplay {
        private JFrame frame;
        private JLabel label;
    
        public ImageDisplay() {
            frame = new JFrame("图片显示");
            label = new JLabel();
            JButton button = new JButton("读取图片");
    
            button.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    File file = new File("D:/cat.jpg");
                    if (!file.exists()) {
                        label.setText("文件不存在");
                    } else {
                        try {
                            ImageIcon icon = new ImageIcon(ImageIO.read(file));
                            label.setIcon(icon);
                        } catch (IOException e1) {
                            label.setText("读取失败");
                        }
                    }
                }
            });
    
            frame.add(button, BorderLayout.NORTH);
            frame.add(label, BorderLayout.CENTER);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(500, 500);
            frame.setVisible(true);
        }
    
        public static void main(String[] args) {
            new ImageDisplay();
        }
    }
    
    
    

    ```
    说明:

    使用 ImageIO.read 方法读取图片。
    使用 ImageIcon 将图片包装为一个图标,以便于在 JLabel 中显示。
    在读取图片前检查文件是否存在,若不存在,则显示“文件不存在”。
    若读取图片过程中发生异常,则显示“读取失败”。
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 修改了问题 2月13日
  • 创建了问题 2月13日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效