Java Swing 图像管理系统

这是一个简单的图像管理系统,使用 Java Swing 构建。它允许用户添加、编辑和删除图像信息。

代码

import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import javax.swing.*;

public class Main extends JFrame implements ActionListener {
    private final JTextField usernameField; // 用户名输入框
    private final JPasswordField passwordField; // 密码输入框
    private final JButton loginButton; // 登录按钮
    private final JLabel statusLabel; // 状态标签
    private final JList<String> imageList; // 图像列表
    private final DefaultListModel<String> listModel; // 图像列表模型
    private final JMenuItem addMenuItem; // 添加菜单项
    private final JMenuItem editMenuItem; // 编辑菜单项
    private final JMenuItem deleteMenuItem; // 删除菜单项

    private final ArrayList<ImageInfo> imageInfoList; // 图像信息列表

    public Main() {
        setTitle('图像管理系统'); // 设置窗口标题
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置关闭操作

        // 创建登录界面
        JPanel loginPanel = new JPanel(new GridLayout(3, 2)); // 创建登录面板
        loginPanel.add(new JLabel('用户名:')); // 添加用户名标签
        usernameField = new JTextField(); // 创建用户名输入框
        loginPanel.add(usernameField); // 添加用户名输入框
        loginPanel.add(new JLabel('密码:')); // 添加密码标签
        passwordField = new JPasswordField(); // 创建密码输入框
        loginPanel.add(passwordField); // 添加密码输入框
        loginButton = new JButton('登录'); // 创建登录按钮
        loginButton.addActionListener(this); // 添加登录按钮事件监听器
        loginPanel.add(loginButton); // 添加登录按钮
        statusLabel = new JLabel('退出'); // 创建状态标签
        loginPanel.add(statusLabel); // 添加状态标签
        add(loginPanel, BorderLayout.NORTH); // 将登录面板添加到窗口的北部

        // 创建图片列表和菜单
        listModel = new DefaultListModel<String>(); // 创建图像列表模型
        imageList = new JList<String>(listModel); // 创建图像列表
        JScrollPane scrollPane = new JScrollPane(imageList); // 创建滚动面板
        add(scrollPane, BorderLayout.CENTER); // 将滚动面板添加到窗口的中部

        JPopupMenu popupMenu = new JPopupMenu(); // 创建弹出菜单
        addMenuItem = new JMenuItem('Add'); // 创建添加菜单项
        addMenuItem.addActionListener(this); // 添加添加菜单项事件监听器
        popupMenu.add(addMenuItem); // 添加添加菜单项到弹出菜单
        editMenuItem = new JMenuItem('Edit'); // 创建编辑菜单项
        editMenuItem.addActionListener(this); // 添加编辑菜单项事件监听器
        popupMenu.add(editMenuItem); // 添加编辑菜单项到弹出菜单
        deleteMenuItem = new JMenuItem('Delete'); // 创建删除菜单项
        deleteMenuItem.addActionListener(this); // 添加删除菜单项事件监听器
        popupMenu.add(deleteMenuItem); // 添加删除菜单项到弹出菜单
        imageList.setComponentPopupMenu(popupMenu); // 将弹出菜单添加到图像列表

        // 初始化图片信息列表
        imageInfoList = new ArrayList<ImageInfo>(); // 创建图像信息列表
        imageInfoList.add(new ImageInfo('image1.jpg', '2019-01-01', 'This is image 1.')); // 添加图像信息
        imageInfoList.add(new ImageInfo('image2.jpg', '2019-01-02', 'This is image 2.')); // 添加图像信息
        imageInfoList.add(new ImageInfo('image3.jpg', '2019-01-03', 'This is image 3.')); // 添加图像信息
        updateImageList(); // 更新图像列表
    }

    // 更新图片列表
    private void updateImageList() {
        listModel.clear(); // 清空图像列表模型
        for (ImageInfo info : imageInfoList) { // 遍历图像信息列表
            listModel.addElement(info.getName()); // 添加图像名称到图像列表模型
        }
    }

    // 显示图片信息
    private void showImageInfo(int index) {
        ImageInfo info = imageInfoList.get(index); // 获取指定索引的图像信息
        JOptionPane.showMessageDialog(this, 'Name: ' + info.getName() // 显示图像信息对话框
                + '\nDate: ' + info.getDate()
                + '\nDescription: ' + info.getDescription());
    }

    // 处理菜单操作
    private void handleMenuAction(String command) {
        int index = imageList.getSelectedIndex(); // 获取选中的图像列表索引
        if (index < 0) { // 如果没有选中任何图像
            JOptionPane.showMessageDialog(this, 'Please select an image.'); // 显示提示对话框
            return;
        }
        if (command.equals('添加信息')) { // 如果是添加菜单
            // 添加图片信息
            String name = JOptionPane.showInputDialog(this, 'Name:'); // 获取图像名称
            if (name != null && !name.trim().isEmpty()) { // 如果图像名称不为空
                String date = JOptionPane.showInputDialog(this, 'Date:'); // 获取图像日期
                String description = JOptionPane.showInputDialog(this, 'Description:'); // 获取图像描述
                imageInfoList.add(new ImageInfo(name, date, description)); // 添加图像信息到图像信息列表
                updateImageList(); // 更新图像列表
            }
        } else if (command.equals('修改信息')) { // 如果是编辑菜单
            // 修改图片信息
            ImageInfo info = imageInfoList.get(index); // 获取选中索引的图像信息
            String name = JOptionPane.showInputDialog(this, 'Name:', info.getName()); // 获取新的图像名称
            if (name != null && !name.trim().isEmpty()) { // 如果图像名称不为空
                String date = JOptionPane.showInputDialog(this, 'Date:', info.getDate()); // 获取新的图像日期
                String description = JOptionPane.showInputDialog(this, 'Description:', info.getDescription()); // 获取新的图像描述
                info.setName(name); // 更新图像名称
                info.setDate(date); // 更新图像日期
                info.setDescription(description); // 更新图像描述
                updateImageList(); // 更新图像列表
            }
        } else if (command.equals('删除')) { // 如果是删除菜单
            // 删除图片信息
            int confirm = JOptionPane.showConfirmDialog(this, 'Are you sure to delete this image?'); // 显示确认对话框
            if (confirm == JOptionPane.YES_OPTION) { // 如果用户确认删除
                imageInfoList.remove(index); // 从图像信息列表中删除选中索引的图像信息
                updateImageList(); // 更新图像列表
            }
        }
    }

    // 处理按钮和菜单事件
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == loginButton) { // 如果是登录按钮
            // 处理登录
            String username = usernameField.getText(); // 获取用户名
            String password = new String(passwordField.getPassword()); // 获取密码
            if (username.equals('chenjiale') && password.equals('788280')) { // 如果用户名和密码正确
                statusLabel.setText('登录成功'); // 更新状态标签
                loginButton.setEnabled(false); // 禁用登录按钮
                addMenuItem.setEnabled(true); // 启用添加菜单项
                editMenuItem.setEnabled(true); // 启用编辑菜单项
                deleteMenuItem.setEnabled(true); // 启用删除菜单项
            } else { // 如果用户名或密码错误
                statusLabel.setText('登录失败'); // 更新状态标签
            }
        } else if (e.getSource() == addMenuItem) { // 如果是添加菜单
            // 处理添加菜单
            handleMenuAction('添加信息');
        } else if (e.getSource() == editMenuItem) { // 如果是编辑菜单
            // 处理编辑菜单
            handleMenuAction('修改信息');
        } else if (e.getSource() == deleteMenuItem) { // 如果是删除菜单
            // 处理删除菜单
            handleMenuAction('删除');
        }
    }

    // 图片信息类
    private static class ImageInfo {
        private String name; // 图像名称
        private String date; // 图像日期
        private String description; // 图像描述

        public ImageInfo(String name, String date, String description) {
            this.name = name;
            this.date = date;
            this.description = description;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getDate() {
            return date;
        }

        public void setDate(String date) {
            this.date = date;
        }

        public String getDescription() {
            return description;
        }

        public void setDescription(String description) {
            this.description = description;
        }
    }

    public static void main(String[] args) {
        Main manager = new Main(); // 创建图像管理系统
        manager.setSize(400, 300); // 设置窗口大小
        manager.setVisible(true); // 显示窗口
    }
}

解释

  • 该代码使用 Java Swing 创建一个图形用户界面 (GUI)。
  • 它包含一个登录界面,要求用户输入用户名和密码。
  • 成功登录后,将显示一个图像列表。
  • 用户可以通过右键单击列表并选择相应的菜单选项来添加、编辑或删除图像信息。
  • ImageInfo 类用于存储有关每个图像的信息,例如名称、日期和描述。
  • 代码包含详细的注释,解释了每一部分的功能。

如何运行

  1. 将代码保存为 Main.java 文件。
  2. 打开命令提示符或终端窗口,并导航到保存文件的目录。
  3. 使用以下命令编译代码:
javac Main.java
  1. 使用以下命令运行代码:
java Main

这将启动图像管理系统应用程序。

Java Swing 图像管理系统 - 带注释代码示例

原文地址: https://www.cveoy.top/t/topic/f1KN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录