Java 图像管理系统核心代码解析
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
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来管理列表数据。 -
弹出菜单: 程序使用
JPopupMenu和JMenuItem创建弹出菜单,并为每个菜单项添加了事件监听器,以便在用户点击时执行相应的操作。 -
图像信息类: 程序定义了一个
ImageInfo类来存储图像信息,包括图像名称、日期和描述。 -
更新图像列表: 每当添加、修改或删除图像信息时,程序都会更新图像列表,以保持数据同步。
-
显示图像信息: 当用户选中某个图像并右键点击时,程序会弹出一个对话框,显示该图像的详细信息。
4. 总结
这个简单的 Java 图像管理系统展示了如何使用 Swing 库创建用户界面,以及如何使用 Java 代码实现基本的功能,例如登录、数据管理和事件处理。通过学习和理解这段代码,你可以为将来开发更复杂的应用程序打下基础。
原文地址: https://www.cveoy.top/t/topic/f1KY 著作权归作者所有。请勿转载和采集!