⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example7frame.java

📁 很不错的一个图片浏览测小程序
💻 JAVA
字号:
package mycode;

import java.awt.Graphics;
import java.awt.Image;
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.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

/**
 * ImageIO的简单应用实例
 * @author 左杰  jdk 5.0
 *
 */
public class Example7Frame extends JFrame {

    private static final long serialVersionUID = 1L;
    private JLabel label;
    private JFileChooser fileChooser;
    private ImagePanel panel;
    public Example7Frame() {
        setTitle("图片浏览");//设置窗体标题
        setSize(500, 400);//设置窗体大小
        //创建标签对象
        label = new JLabel();
        add(label);//在窗体上添加标签
        //创建文件选择器对象
        fileChooser = new JFileChooser();
        fileChooser.setCurrentDirectory(new File("."));//设置默认路径为当前目录
        //创建菜单栏
        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);//在窗体上添加菜单栏
        //添加菜单项
        JMenu menu = new JMenu("文件");
        menuBar.add(menu);//在菜单栏中添加菜单项
        //添加“打开”子菜单项
        JMenuItem openItem = new JMenuItem("打开");
        menu.add(openItem);//在菜单项中添加子菜单项
        panel = new ImagePanel();//创建显示图片面板
        add(panel);//窗体中添加图片面板
        //为“打开”菜单添加事件及监听
        openItem.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event){
                //显示文件选择器
                int result = fileChooser.showOpenDialog(null);
                //如果选择文件则显示在标签中
                if(result==JFileChooser.APPROVE_OPTION){
                    String name = fileChooser.getSelectedFile().getPath();//获取选择文件的路径
                    panel.setImage(name);//设置图片路径
                    panel.repaint();//更新面板
                }
            }
        });
        //添加“退出”子菜单项
        JMenuItem exitItem = new JMenuItem("退出");
        menu.add(exitItem);//在菜单项中添加子菜单项
        //为“退出”菜单添加事件及监听
        exitItem.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event){
                System.exit(0);
            }
        });        
    }

    public static void main(String[] args) {
        Example7Frame frame = new Example7Frame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

/**
 * 创建用于显示图片的面板
 */
class ImagePanel extends JPanel {

    private static final long serialVersionUID = 1L;
    private Image image;
    private int showWdith;
    private int showHeight;
    public void setImage(String fileName) {
        // 读取图片文件
        try {
            image = ImageIO.read(new File(fileName));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (image == null)
            return;
        //获取图像文件的宽度和高度
        int imageWidth = image.getWidth(this);
        int imageHeight = image.getHeight(this);
        //获取面板的高度和宽度
        int width = getWidth();
        int height = getHeight();
        //图片最大显示为面板的大小
        if(imageWidth>width){
            this.showWdith = width;
        }else{
            this.showWdith = imageWidth;
        }
        if(imageHeight>height){
            this.showHeight = height;
        }else{
            this.showHeight = imageHeight;
        }
        g.drawImage(image, 0, 0, showWdith, showHeight, null, null);//在面板上绘制图片内容
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -