当前位置: 首页 > 知识库问答 >
问题:

在jfilechooser中包含图像缩略图

东方方伟
2023-03-14

我有一个jfilechooser,它帮助搜索和选择图像上传到项目数据库。还有一个缩略图类可以将上传的图像压缩成所需的大小。运行文件选择器的按钮action_performed的代码如下:

private void jButton13ActionPerformed(java.awt.event.ActionEvent evt) {                                          
    try{
    String sql = "delete from TempImage";
    pst=con.prepareStatement(sql);
    pst.execute();
    }catch(SQLException | HeadlessException e){
    JOptionPane.showMessageDialog(null, e);
    }finally{
                try{
                    rs.close();
                    pst.close();
                }
                catch(Exception e){
                }
            }
        JFileChooser chooser =new JFileChooser();
        chooser.showOpenDialog(null);
        File f =chooser.getSelectedFile();
        filename=f.getAbsolutePath();
        image1.setText(filename);

        try{
            File imgs =new File(filename);
            BufferedImage bufferedimage=ImageIO.read(imgs);
            BufferedImage thumbnail=Thumbnails.of(bufferedimage)
            .size(125, 114)
            .asBufferedImage();
            ByteArrayOutputStream os = new  ByteArrayOutputStream();
            ImageIO.write(thumbnail,"jpeg", os);
            InputStream is=new ByteArrayInputStream(os.toByteArray());
            ByteArrayOutputStream bos = new  ByteArrayOutputStream();
            byte[] buf =new byte[1024];
            try{
                for(int readNum; (readNum=is.read(buf))!=-1;){
                    bos.write(buf,0,readNum);
                    System.out.println("Read" +readNum+ "bytes,");
                }
            }catch(IOException ex){
                Logger.getLogger(null);
            }
            person_image=bos.toByteArray();
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, e);
        }finally{
            try{
                rs.close();
                pst.close();
            }
            catch(Exception e){
            }
        }
        try{
        String sql="insert into TempImage(Image)values(?)";
        pst = con.prepareStatement(sql);
        pst.setBytes(1, person_image);
        pst.execute();
        }catch(SQLException | HeadlessException ep){
        JOptionPane.showMessageDialog(null,ep);
        }finally{
            try{
                rs.close();
                pst.close();
            }
            catch(Exception e){

            }
        } 
        try{
         String sql ="select Image from TempImage";
            pst=con.prepareStatement(sql);
            rs=pst.executeQuery();

            if(rs.next()){
                byte[] imagedata = rs.getBytes("Image");
                format =new ImageIcon(imagedata);
                image.setIcon(format);
            } }catch(SQLException | HeadlessException e){
            JOptionPane.showMessageDialog(null, e);
            }
       finally{
            try{
                rs.close();
                pst.close();
            }
            catch(Exception e){
            }
        }// TODO add your handling code here:
    }

共有1个答案

景育
2023-03-14

使用JFileChooser没有简单的方法可以做到这一点。金属外观和感觉是非常有限的。金属外观只提供了一个列表,如arrengement的文件,它不使用Windows界面,所以你必须使用另一种技术。

就像在这个可能重复的问题中,你可以通过一种黑客的方式来实现它。另一个解决方案是使用FileDialog而不是JFileChooser。FileDialog类使用当前操作系统的外观,使用它的组件,而不是根据自己的标准对其进行排列,因此,如果用户愿意,他/她可以将其视为一个大图标。你可以在这里找到它的文档。示例如下:

FileDialog fileDialog = new FileDialog(yourJFrame, "Choose a file", FileDialog.LOAD);
fd.setDirectory("the directory you want the dialog to be opened in");
fd.setFile("*.desiredExtension");
fd.setVisible(true);
String filename = fd.getFile();
if (filename == null)
    //your user cancelled the choise
else
    //file chosen
 类似资料:
  • 问题内容: 我想创建一个带有缩略图的图像文件视图,所以我将FileView子类化,并在创建方法中进行了一些缩放,以便显示缩略图图像。 但是,总体效果是,该小部件在打开目录并显示缩略图之前需要花费一些时间。在下面的createImageIcon()中,我需要两次调用new ImageIcon()两次,分别使用图像文件路径和下一次调整大小的图像作为构造函数参数。我认为这是使小部件变慢的原因。 有没有更

  • 问题内容: 我处理了大量直观的示例测试案例。是否有任何方便的方法将它们包含在Java源代码中并在Javadocs中进行链接,因此我的IDE可以在编码时自动显示它们(通过在IDE中调用Javadoc渲染器功能)? 我尝试将图像放置在Java源代码旁边并使用,但是它没有使用(我使用了png)。 (注意-在这种情况下,它在我的测试源中) 问题答案: 由于您没有显示任何消息来源,所以我只能做个玻璃球猜测…

  • 出于某种原因,当我使用WordPress 3.6.1媒体库GUI功能裁剪缩略图时,它似乎不会影响公文包页面上显示的缩略图?即使缩略图在后端显示为裁剪,但在公文包页面上仍然显示不正确? 下面是公文包页面的代码摘录。正如您所看到的,它使用中等大小的缩略图。 functions.php我有以下几点: 为什么我不能通过WordPress GUI将上传到媒体库的肖像图像裁剪成横向格式?

  • 问题内容: 我目前正在建立一个基本上相当于搜索引擎和网络漫画画廊之间的交叉点的网站,该画廊侧重于引用来源并给予作者称赞。 我正在尝试找出一种搜索图像以在其中查找字符的方法。 例如: 假设我将红色字符和绿色字符另存为“ Red Man”和“ Green Man”,我如何确定图像是否包含一个或另一个。 不需要100%识别,或者什么是我想创建的更多功能,我不确定从哪里开始。我已经做了很多谷歌搜索来进行图

  • 我正在尝试创建以下图库: -一个大图像 -下面图库图像的缩略图 -大图像应在lightbox图库中单击后打开所有图像 我让lightbox画廊使用PhotoSwipe工作,当我点击大图像时,它就会触发。我也有缩略图在大图像下面的地方。我现在的问题是,当我单击其中一个缩略图时,我如何改变大图像?我见过很多例子(也是相当简单的例子),但在我的案例中似乎没有一个行得通。 下面是我为缩略图准备的代码: 我

  • 我使用Wordpress中的Types插件创建自定义帖子类型。我已经添加了自定义字段“图像字段”,这是一个重复字段,通过这种方式,我想在我的帖子类型中创建类似gallery的内容 我是这样称呼前端的图像的 使用该代码,我可以看到包含所有图像和媒体文件链接的列表。但是我如何在img标签中添加缩略图而不是精确的图像呢?非常感谢。