【问题标题】:Load multiple files in Swing在 Swing 中加载多个文件
【发布时间】:2013-09-29 08:22:01
【问题描述】:

如何在 Swing 中加载多个文件?

我有一个文件上传按钮,然后我以字节形式保存文件,如何更改代码以便我可以上传多个文件。我已经尝试了很多次,但我遇到了麻烦..希望有人可以帮助我

byte[] FileSurat;
String FilenameSurat;
File  imageSurat;

private void botton10ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    if (idPemohon == 0 && idRencanaTapak == 0){
        JOptionPane.showMessageDialog(this, "Pilih Data Yang akan di Upload");
    }else{

        JFileChooser chooser = new JFileChooser();
        chooser.setCurrentDirectory(new File(System.getProperty("user.home")));
        chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        chooser.addChoosableFileFilter(new FileNameExtensionFilter("Images", "jpg", "png", "gif", "bmp"));
        chooser.setAcceptAllFileFilterUsed(true);

        int i = chooser.showOpenDialog(this);
        if (i == JFileChooser.APPROVE_OPTION) {
             if(labelSurat != null){

                FileSurat = null;
                FilenameSurat = null;
                jPanel2.remove(labelSurat);
                jPanel2.validate();
                jPanel2.repaint();
            }
            try {
                imageSurat = chooser.getSelectedFile();
                String filename = chooser.getSelectedFile().getName();
                String extension = "";

                int y = filename.lastIndexOf('.');
                if (y > 0) {
                    extension = filename.substring(y+1);
                }

                String xx = chooser.getTypeDescription(imageSurat);
                if("JPEG image".equals(xx) || "PNG image".equals(xx) || "JPG image".equals(xx) || "GIF image".equals(xx) || "BMP image".equals(xx)){
                    BufferedImage originalImage = ImageIO.read(imageSurat);
                    if(originalImage == null){
                        JOptionPane.showMessageDialog(rootPane, "Format file corrupt");
                    }else{
                        int type = originalImage.getType() == 0 ? BufferedImage.TYPE_INT_ARGB : originalImage.getType();
                        BufferedImage resizeImageJpg = resizeImage(originalImage, type);
                        photoSurat = new ImageIcon(toImage(resizeImageJpg));
                    }
                }else{
                    ico = new File(getClass().getResource("/images/no-image.png").getFile());
                    BufferedImage originalImage = ImageIO.read(ico);
                    int type = originalImage.getType() == 0 ? BufferedImage.TYPE_INT_ARGB : originalImage.getType();

                    BufferedImage resizeImageJpg = resizeImage(originalImage, type);
                    photoSurat = new ImageIcon(toImage(resizeImageJpg));
                }

                FilenameSurat = extension;
                FileSurat = new byte[(int) imageSurat.length()];
                FileInputStream fileInputStream = new FileInputStream(imageSurat);
                fileInputStream.read(FileSurat);

                //jPanel2.removeAll();


                labelSurat = new JLabel("", photoSurat, JLabel.RIGHT);
                jPanel2.add(labelSurat);

                ico = null;
                repaint();
                chooser.setCurrentDirectory(imageSurat);
            } catch (IOException ex) {
                Logger.getLogger(formUtama.class.getName()).log(Level.SEVERE, null, ex);
            }

        }
    }
}    

【问题讨论】:

  • “我已经试过很多次了” 具体来说你累了什么? “但我有麻烦” 什么麻烦?始终复制/粘贴错误和异常输出。
  • 请学习常见的Java naming conventions(特别是用于名称的大小写)用于类、方法和属性名称,并始终如一地使用它们。
  • 顺便说一句 - 你 确定 你的意思是 upload (该代码没有这样做),而不是 load & display (确实如此)。

标签: java image swing upload jfilechooser


【解决方案1】:

您将JFileChooser 切换为允许multiple selection,然后使用JFileChooser#getSelectedFiles 方法获取Files 的数组而不是单个数组。

使用您拥有的相同代码循环遍历数组并完成

【讨论】:

    【解决方案2】:

    请参阅this answer许多图像部分,了解显示多张图像的两种方式。

    请参阅this answer,了解形成图像文件过滤器的更好方法(比硬编码类型)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-16
      • 2014-03-20
      • 2012-01-02
      • 2018-06-28
      • 2020-07-27
      • 1970-01-01
      相关资源
      最近更新 更多