如何在用户未选择照片时将默认Jlabel图标存储到数据库中



我有一个小小的要求,请帮助我首先,我有一个标签,我为这个标签设置了一个图标

lbl_photo。setIcon(新javax.swing.ImageIcon (getClass () .getResource (/图片/photo.png))),

和我有一个按钮浏览选择图像。

private void btn_browseActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    JFileChooser chooser = new JFileChooser();
    FileNameExtensionFilter filter = new FileNameExtensionFilter(
            "jpeg, gif and png files", "jpg", "gif", "png");
    int i = chooser.showOpenDialog(this);
    if (i == JFileChooser.APPROVE_OPTION) {
        image = chooser.getSelectedFile();
        try {
            BufferedImage originalImage = ImageIO.read(image);
            int type = originalImage.getType() == 0 ? BufferedImage.TYPE_INT_ARGB
                    : originalImage.getType();
            BufferedImage resizeImageJpg = resizeImage(originalImage, type);
            photo = new ImageIcon(toImage(resizeImageJpg));
            raster = resizeImageJpg.getRaster();
            data = (DataBufferByte) raster.getDataBuffer();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        lbl_photo.setIcon(photo);
    }
}

现在,我将从浏览按钮中选择的图像存储到数据库

                    Date date1 = new Date();
            Timestamp timestamp1 = new Timestamp(date1.getTime());
            String sql4 = "insert into std_photos values(?,?,?)";
            pstmt5 = con.prepareStatement(sql4);
            pstmt5.setInt(1, Integer.parseInt(txt_eno.getText()));
            pstmt5.setString(2, "");
            pstmt5.setTimestamp(3, timestamp1);
            byte[] extractBytes = data.getData();
            pstmt5.setBytes(2, extractBytes);
            System.out.println(sql4);

图像已成功存储。但是,如果用户没有通过浏览按钮选择图像,则应该将默认的jlabel图标存储在数据库中。请尽早帮助我

您已经在为JFileChooser.APPROVE_OPTION检查chooser.showOpenDialog(this)的返回值。

如果你收到一些其他的选项,或者如果try-catch块读取新图像失败,你可以得到旧的图标,并将其写入数据库

最新更新