Java Swing 图像管理系统 - 带注释代码示例
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类用于存储有关每个图像的信息,例如名称、日期和描述。- 代码包含详细的注释,解释了每一部分的功能。
如何运行
- 将代码保存为
Main.java文件。 - 打开命令提示符或终端窗口,并导航到保存文件的目录。
- 使用以下命令编译代码:
javac Main.java
- 使用以下命令运行代码:
java Main
这将启动图像管理系统应用程序。
原文地址: https://www.cveoy.top/t/topic/f1KN 著作权归作者所有。请勿转载和采集!