Java图片上传、浏览与管理功能实现教程
Java图片上传、浏览与管理功能实现教程
本教程将引导您使用Java实现一个简单的图片上传、浏览和管理系统。我们将涵盖以下功能:
- 用户登录功能: 验证用户身份
- 图片保存功能: 上传并保存图片到服务器
- 图片浏览功能: 展示图片列表
- 图片详情功能: 查看图片详细信息
- 图片信息处理功能: 修改和删除图片信息
1. 用户登录功能
// 定义登录页面
public class LoginPage extends JFrame {
private JTextField usernameField;
private JPasswordField passwordField;
public LoginPage() {
// 初始化界面
...
// 添加登录按钮的监听器
JButton loginButton = new JButton('登录');
loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取用户输入的用户名和密码
String username = usernameField.getText();
String password = new String(passwordField.getPassword());
// 验证用户信息是否正确
if (validateUser(username, password)) {
// 跳转到主页面
MainFrame mainFrame = new MainFrame();
mainFrame.setVisible(true);
dispose();
} else {
// 弹出错误提示
JOptionPane.showMessageDialog(LoginPage.this, '用户名或密码错误', '错误提示', JOptionPane.ERROR_MESSAGE);
}
}
});
// 将登录按钮添加到界面中
...
}
// 验证用户信息是否正确
private boolean validateUser(String username, String password) {
// 查询数据库中是否存在该用户
User user = UserDao.findUserByUsername(username);
if (user == null) {
return false;
}
// 判断密码是否正确
return user.getPassword().equals(password);
}
}
2. 图片保存功能
// 定义上传图片的界面
public class UploadImagePage extends JFrame {
private JFileChooser fileChooser;
public UploadImagePage() {
// 初始化界面
...
// 添加上传按钮的监听器
JButton uploadButton = new JButton('上传');
uploadButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 打开文件选择器
int result = fileChooser.showOpenDialog(UploadImagePage.this);
if (result == JFileChooser.APPROVE_OPTION) {
// 获取选择的文件
File file = fileChooser.getSelectedFile();
// 将文件保存到服务器上
saveImageToServer(file);
// 将图片信息保存到数据库中
saveImageToDatabase(file.getName(), file.getPath(), new Date(), '这是一张图片');
// 弹出成功提示
JOptionPane.showMessageDialog(UploadImagePage.this, '上传成功', '成功提示', JOptionPane.INFORMATION_MESSAGE);
}
}
});
// 将上传按钮添加到界面中
...
}
// 将文件保存到服务器上
private void saveImageToServer(File file) {
// 保存文件到服务器上
...
}
// 将图片信息保存到数据库中
private void saveImageToDatabase(String name, String path, Date createTime, String description) {
// 将图片信息保存到数据库中
ImageDao.addImage(name, path, createTime, description);
}
}
3. 图片浏览功能
// 定义主页面
public class MainFrame extends JFrame {
private JPanel imagePanel;
public MainFrame() {
// 初始化界面
...
// 从数据库中读取用户上传的图片信息
List<ImageInfo> imageList = getImageListFromDatabase();
// 显示图片列表
showImageList(imageList);
}
// 从数据库中读取用户上传的图片信息
private List<ImageInfo> getImageListFromDatabase() {
// 查询数据库中的图片信息
List<Image> images = ImageDao.getAllImages();
// 将查询结果转换为ImageInfo对象列表
List<ImageInfo> imageList = new ArrayList<>();
for (Image image : images) {
ImageInfo imageInfo = new ImageInfo(image.getName(), image.getPath(), image.getCreateTime(), image.getDescription());
imageList.add(imageInfo);
}
return imageList;
}
// 显示图片列表
private void showImageList(List<ImageInfo> imageList) {
// 清空图片面板
imagePanel.removeAll();
// 显示图片列表
for (ImageInfo imageInfo : imageList) {
// 创建图片面板
JPanel imageItemPanel = new JPanel();
imageItemPanel.setLayout(new BorderLayout());
// 显示图片缩略图
ImageIcon imageIcon = new ImageIcon(imageInfo.getPath());
JLabel imageLabel = new JLabel(imageIcon);
imageItemPanel.add(imageLabel, BorderLayout.CENTER);
// 添加点击事件的监听器
imageLabel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// 显示图片详情
showImageDetail(imageInfo);
}
});
// 添加到图片面板中
imagePanel.add(imageItemPanel);
}
// 刷新界面
imagePanel.revalidate();
imagePanel.repaint();
}
}
4. 图片详情功能
// 定义图片详情页面
public class ImageDetailPage extends JPopupMenu {
private JLabel nameLabel;
private JLabel createTimeLabel;
private JTextArea descriptionArea;
public ImageDetailPage(ImageInfo imageInfo) {
// 初始化界面
...
// 显示图片信息
nameLabel.setText(imageInfo.getName());
createTimeLabel.setText(new SimpleDateFormat('yyyy-MM-dd HH:mm:ss').format(imageInfo.getCreateTime()));
descriptionArea.setText(imageInfo.getDescription());
// 添加修改和删除按钮的监听器
JButton modifyButton = new JButton('修改');
modifyButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 修改图片信息
modifyImageInfo(imageInfo);
}
});
add(modifyButton);
JButton deleteButton = new JButton('删除');
deleteButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 删除图片信息
deleteImageInfo(imageInfo);
}
});
add(deleteButton);
}
}
// 在MainFram中添加showImageDetail方法
private void showImageDetail(ImageInfo imageInfo) {
// 创建图片详情页面
ImageDetailPage imageDetailPage = new ImageDetailPage(imageInfo);
// 显示图片详情页面
imageDetailPage.show(MainFrame.this, 0, 0);
}
// 修改图片信息
private void modifyImageInfo(ImageInfo imageInfo) {
// 显示修改图片信息的对话框
ModifyImageInfoDialog dialog = new ModifyImageInfoDialog(imageInfo);
dialog.setVisible(true);
// 更新数据库中的图片信息
ImageDao.updateImage(imageInfo.getId(), dialog.getName(), dialog.getDescription());
// 刷新图片列表
List<ImageInfo> imageList = getImageListFromDatabase();
showImageList(imageList);
}
// 删除图片信息
private void deleteImageInfo(ImageInfo imageInfo) {
// 删除服务器上的图片文件
File file = new File(imageInfo.getPath());
if (file.exists()) {
file.delete();
}
// 删除数据库中的图片信息
ImageDao.deleteImage(imageInfo.getId());
// 刷新图片列表
List<ImageInfo> imageList = getImageListFromDatabase();
showImageList(imageList);
// 关闭图片详情页面
setVisible(false);
}
5. 图片信息处理功能
// 定义修改图片信息的对话框
public class ModifyImageInfoDialog extends JDialog {
private JTextField nameField;
private JDateChooser createTimeField;
private JTextArea descriptionArea;
private String name;
private Date createTime;
private String description;
public ModifyImageInfoDialog(ImageInfo imageInfo) {
// 初始化界面
...
// 显示图片信息
nameField.setText(imageInfo.getName());
createTimeField.setDate(imageInfo.getCreateTime());
descriptionArea.setText(imageInfo.getDescription());
// 添加保存按钮的监听器
JButton saveButton = new JButton('保存');
saveButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 保存修改后的图片信息
name = nameField.getText();
createTime = createTimeField.getDate();
description = descriptionArea.getText();
setVisible(false);
}
});
// 将保存按钮添加到界面中
...
}
public String getName() {
return name;
}
public Date getCreateTime() {
return createTime;
}
public String getDescription() {
return description;
}
}
// 在ImageDao中添加以下方法
public static List<Image> getAllImages() {
List<Image> images = new ArrayList<>();
try {
Connection conn = getConnection();
String sql = 'SELECT * FROM images';
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Image image = new Image(rs.getInt('id'), rs.getString('name'), rs.getString('path'), rs.getDate('create_time'), rs.getString('description'));
images.add(image);
}
closeConnection(conn, ps, rs);
} catch (SQLException e) {
e.printStackTrace();
}
return images;
}
public static void addImage(String name, String path, Date createTime, String description) {
try {
Connection conn = getConnection();
String sql = 'INSERT INTO images (name, path, create_time, description) VALUES (?, ?, ?, ?)';
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, name);
ps.setString(2, path);
ps.setDate(3, new java.sql.Date(createTime.getTime()));
ps.setString(4, description);
ps.executeUpdate();
closeConnection(conn, ps);
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void updateImage(int id, String name, String description) {
try {
Connection conn = getConnection();
String sql = 'UPDATE images SET name=?, description=? WHERE id=?';
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, name);
ps.setString(2, description);
ps.setInt(3, id);
ps.executeUpdate();
closeConnection(conn, ps);
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void deleteImage(int id) {
try {
Connection conn = getConnection();
String sql = 'DELETE FROM images WHERE id=?';
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ps.executeUpdate();
closeConnection(conn, ps);
} catch (SQLException e) {
e.printStackTrace();
}
}
原文地址: https://www.cveoy.top/t/topic/f1Kz 著作权归作者所有。请勿转载和采集!