当前位置: 首页 > article >正文

Java实战:图像浏览器

文章目录

  • 1. 实战概述
  • 2. 知识准备
  • 3. 实现步骤
    • 3.1 创建Java项目
    • 3.2 创建图像浏览器类
      • 3.2.1 声明变量与常量
      • 3.2.2 创建构造方法
      • 3.2.3 创建初始化界面方法
      • 3.2.4 创建处理事件方法
      • 3.2.5 创建主方法
      • 3.2.6 查看完整代码
    • 3.3 运行程序,查看结果
  • 4. 实战小结
  • 5. 扩展练习

1. 实战概述

  • 在本次实战中,我们将通过一个简单的Java Swing图像浏览器案例,学习如何构建GUI应用程序。用户通过菜单项打开文件选择器对话框,选择图片文件后,图片会在窗口标签中显示。此案例将涵盖菜单栏、文件对话框和图片显示等核心功能,帮助大家快速掌握Java Swing的基本应用。

2. 知识准备

  1. 窗口(JFrame):用于创建应用程序的主窗口
  2. 标签(JLabel):用于显示文本或图像
  3. 菜单(JMenuBar、JMenu、JMenuItem):用于创建菜单栏、菜单和菜单项
  4. 文件选择器(JFileChooser):用于选择文件
  5. 事件处理:通过注册监听器并实现事件处理方法,响应用户操作

3. 实现步骤

3.1 创建Java项目

  • 设置项目基本信息
    在这里插入图片描述
  • 单击【Create】按钮,生成项目基本骨架
    在这里插入图片描述

3.2 创建图像浏览器类

  • 创建net.huawei.gui
    在这里插入图片描述
  • net.huawei.gui包里创建ImageViewer
    在这里插入图片描述
  • ImageViewer继承JFrame
    在这里插入图片描述

3.2.1 声明变量与常量

  • 声明六个变量
    在这里插入图片描述

3.2.2 创建构造方法

  • 构造方法里调用初始化界面方法和事件处理方法
    在这里插入图片描述

3.2.3 创建初始化界面方法

  • 创建initGUI()方法
    在这里插入图片描述
  • 代码说明:这段代码是图像浏览器的界面初始化方法,用于设置程序的初始界面。它首先设置窗口大小为600×500像素,然后创建一个标签组件用于后续显示图片。接着创建一个文件选择器,设置其初始目录为当前目录。之后构建菜单栏,添加“文件”菜单,并在其中添加“打开”和“退出”两个菜单项,分别用于打开图片和退出程序。最后,设置窗口的默认关闭操作、居中显示,并将其设置为可见状态。

3.2.4 创建处理事件方法

  • 创建handleEvents()方法
    在这里插入图片描述
  • 代码说明:这段代码实现了图像浏览器的事件处理逻辑。它为“打开”菜单项添加了事件监听器,当用户点击时,会弹出文件选择器对话框。如果用户选择了图片文件,程序会获取文件路径并将其设置为标签的图标,从而在窗口中显示图片。同时,“退出”菜单项的事件监听器用于关闭程序。

3.2.5 创建主方法

  • 主方法里实例化图像浏览器
    在这里插入图片描述

3.2.6 查看完整代码

package net.huawei.gui;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

/**
 * 功能:图像浏览器类
 * 作者:华卫
 * 日期:2025年01月31日
 */
public class ImageViewer extends JFrame {
    private JLabel label; // 标签
    private JFileChooser chooser; // 文件选择器
    private JMenuBar menuBar; // 菜单栏
    private JMenu mnuFile; // 文件菜单
    private JMenuItem mniOpen; // 打开菜单项
    private JMenuItem mniExit; // 退出菜单项

    /**
     * 构造方法
     */
    public ImageViewer(String title) {
        super(title);
        initGUI(); // 调用初始化界面方法
        handleEvents(); // 调用事件处理方法
    }

    /**
     * 初始化界面方法
     */
    private void initGUI() {
        // 设置窗口尺寸
        setSize(600, 500);
        // 创建标签
        label = new JLabel();
        add(label);
        // 创建文件选择器
        chooser = new JFileChooser();
        chooser.setCurrentDirectory(new File("."));
        // 创建菜单栏
        menuBar = new JMenuBar();
        setJMenuBar(menuBar); // 设置菜单栏
        // 添加文件菜单
        mnuFile = new JMenu("文件(F)");
        mnuFile.setMnemonic('F'); // 设置热键字母
        menuBar.add(mnuFile);
        // 添加【打开】菜单项
        mniOpen = new JMenuItem("打开(O)");
        mniOpen.setMnemonic('O');  // 设置热键字母
        mnuFile.add(mniOpen);
        // 添加【退出】菜单项
        mniExit = new JMenuItem("退出(X)");
        mniExit.setMnemonic('X');  // 设置热键字母
        mnuFile.add(mniExit);
        // 设置窗口缺省关闭操作
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 设置窗口屏幕居中
        setLocationRelativeTo(null);
        // 设置窗口可见
        setVisible(true);
    }

    /**
     * 处理事件方法
     */
    private void handleEvents() {
        // 处理【打开】菜单项的事件
        mniOpen.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                // 显示文件选择器对话框
                int choice = chooser.showOpenDialog(null);
                // 如果选择了文件,那么将其设置为标签的图标
                if (choice == JFileChooser.APPROVE_OPTION) {
                    String name = chooser.getSelectedFile().getPath();
                    label.setIcon(new ImageIcon(name));
                }
            }
        });

        // 处理【退出】菜单项的事件
        mniExit.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                System.exit(0); // 退出应用程序
            }
        });
    }

    /**
     * 主方法
     *
     * @param args
     */
    public static void main(String[] args) {
       new ImageViewer("图像浏览器V1.0");
    }
}

3.3 运行程序,查看结果

  • 运行ImageViewer,显示主窗口
    在这里插入图片描述
  • 打开文件菜单
    在这里插入图片描述
  • 单击【打开】菜单项,选择要打开的图片文件deepseek.jpg
    在这里插入图片描述
  • 单击【打开】按钮,浏览图片
    在这里插入图片描述

4. 实战小结

  • 在本次实战中,我们通过Java Swing实现了一个简单的图像浏览器应用程序。首先,我们创建了一个JFrame窗口,并添加了菜单栏、标签和文件选择器等组件。通过JFileChooser,用户可以选择本地图片文件,并将其显示在窗口的标签中。事件处理部分通过ActionListener实现了“打开”和“退出”菜单项的功能,确保用户操作能够正确响应。通过这个案例,我们掌握了Java Swing的基本组件使用和事件处理机制,为后续开发更复杂的GUI应用奠定了基础。

5. 扩展练习

  1. 添加图片缩放功能:允许用户调整图片的大小。
  2. 支持多种图片格式:扩展文件选择器,支持更多图片格式。
  3. 添加工具栏:在窗口中添加工具栏,提供常用操作的快捷方式。

http://www.kler.cn/a/527501.html

相关文章:

  • 推荐一款好用的翻译类浏览器扩展插件
  • 基于遗传优化GRNN和Hog特征提取的交通标志识别算法matlab仿真
  • Android车机DIY开发之学习篇(六)编译讯为3568开发板安卓
  • LeetCode 跳跃类问题的解题技巧:跳跃游戏与最少跳跃数
  • pytorch基于FastText实现词嵌入
  • 基于Python的药物相互作用预测模型AI构建与优化(上.文字部分)
  • (三)QT——信号与槽机制——计数器程序
  • 51单片机CLD1602显示万年历+闹钟+农历+整点报时
  • 【B站保姆级视频教程:Jetson配置YOLOv11环境(五)Miniconda安装与配置】
  • 大厂面试题备份20250130
  • 【deepseek-r1】ollama如何更改安装位置以及自定义模型下载位置
  • Flink Forward Asia 2024 - 总结和展望(附PPT下载链接)
  • 游戏引擎 Unity - Unity 下载与安装
  • Ae 表达式语言引用:Marker Key
  • 深入解析 Linux 内核中的页面错误处理机制
  • 智慧园区如何利用智能化手段提升居民幸福感与环境可持续性
  • 【协议详解】卫星通信5G IoT NTN SIB32-NB 信令详解
  • FPGA|使用quartus II通过AS下载POF固件
  • 自然语言处理-词嵌入 (Word Embeddings)
  • git笔记-简单入门
  • C++ memset设置数组内容和memcpy拷贝数组内容的介绍与使用
  • 洛谷 P10288 [GESP样题 八级] 区间 C++ 完整题解(STL二分法)
  • MySQL为什么默认引擎是InnoDB ?
  • 【Leetcode算题记录】枚举技巧(枚举右,维护左)
  • VisionMamba安装
  • Java小白入门教程:三种注释+快捷方式