Java 图像管理系统核心代码解析

这篇文章将解析一个简单的 Java 图像管理系统的核心代码,帮助你理解其背后的逻辑和实现方式。

1. 程序概述

这个图像管理系统主要包含以下功能:

  • 登录界面: 用户需要输入正确的用户名和密码才能登录系统。* 图像列表: 登录后,用户可以看到系统中存储的图像列表。* 弹出菜单: 用户可以通过右键点击图像列表,弹出菜单进行添加、修改、删除图像信息等操作。

2. 核心代码解析javaimport 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 imageList; private final DefaultListModel 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('添加信息');         addMenuItem.addActionListener(this);         popupMenu.add(addMenuItem);        editMenuItem = new JMenuItem('修改信息');         editMenuItem.addActionListener(this);        popupMenu.add(editMenuItem);        deleteMenuItem = new JMenuItem('删除');         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()                 + '

Date: ' + info.getDate() + ' Description: ' + info.getDescription()); }

// 处理菜单操作    private void handleMenuAction(String command) {        int index = imageList.getSelectedIndex();        if (index < 0) {             JOptionPane.showMessageDialog(this, '选择一个图片');             return;        }        if (command.equals('添加信息')) {             // 添加图片信息            String name = JOptionPane.showInputDialog(this, '名称:');             if (name != null && !name.trim().isEmpty()) {                 String date = JOptionPane.showInputDialog(this, '图像日期:');                String description = JOptionPane.showInputDialog(this, '描述:');                imageInfoList.add(new ImageInfo(name, date, description));                 updateImageList();            }        } else if (command.equals('修改信息')) {             // 修改图片信息            ImageInfo info = imageInfoList.get(index);            String name = JOptionPane.showInputDialog(this, '名称:', info.getName());             if (name != null && !name.trim().isEmpty()) {                 String date = JOptionPane.showInputDialog(this, '图像日期:', info.getDate());                 String description = JOptionPane.showInputDialog(this, '描述:', info.getDescription());                info.setName(name);                 info.setDate(date);                 info.setDescription(description);                 updateImageList();             }        } else if (command.equals('删除')) {             // 删除图片信息            int confirm = JOptionPane.showConfirmDialog(this, '确定删除此图像?');             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);    }}

3. 代码功能详解

  • 组件定义: 代码首先定义了程序所需的各种组件,例如文本框、按钮、标签、列表等,并使用 Swing 库创建了用户界面。

  • 登录功能: 当用户点击“登录”按钮时,程序会获取用户名和密码,并进行验证。如果验证通过,则更新状态标签,并启用相关菜单项。

  • 图像列表: 程序使用 JList 组件来展示图像列表,并使用 DefaultListModel 来管理列表数据。

  • 弹出菜单: 程序使用 JPopupMenuJMenuItem 创建弹出菜单,并为每个菜单项添加了事件监听器,以便在用户点击时执行相应的操作。

  • 图像信息类: 程序定义了一个 ImageInfo 类来存储图像信息,包括图像名称、日期和描述。

  • 更新图像列表: 每当添加、修改或删除图像信息时,程序都会更新图像列表,以保持数据同步。

  • 显示图像信息: 当用户选中某个图像并右键点击时,程序会弹出一个对话框,显示该图像的详细信息。

4. 总结

这个简单的 Java 图像管理系统展示了如何使用 Swing 库创建用户界面,以及如何使用 Java 代码实现基本的功能,例如登录、数据管理和事件处理。通过学习和理解这段代码,你可以为将来开发更复杂的应用程序打下基础。

Java 图像管理系统核心代码解析

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

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