Ab einem JFileChooser in einem angegebenen Verzeichnis und zeigt nur Dateien eines bestimmten Typs

Ich habe ein Programm unter Verwendung eines JFileChooser. Um es kurz zu machen, das volle Programm ist eine Benutzeroberfläche, die Benutzern erlaubt, zu manipulieren, PNGs und JPGs. Ich möchte es so machen, dass der JFileChooser sofort öffnet, um die Bild-Verzeichnis (windows). Wenn der Benutzer öffnet Ihre JFileChooser, es wird direkt auf die Bilder-Bibliothek C:\Users\(BENUTZER)\Bilder

Außerdem wäre es schön, um NUR Dateien eines bestimmten Typs (PNGs und JPGs). Viele Programme scheinen in der Lage sein, dies zu tun; nur ermöglicht die Auswahl bestimmter Dateien. Tut JFileChooser so etwas zulassen? Derzeit bin ich mit einem Massiv unzuverlässig, laufen Methode abzulehnen, nicht-PNGs/JPGs.

Folgende bezieht sich auf die "durchsuchen" - Schaltfläche der GUI, in dem ein Benutzer wählen Sie Ihr Bild für die Bearbeitung, und es wird auf dem Bildschirm angezeigt.

    try {
       int val = filec.showOpenDialog(GridCreator.this);
       if(val==JFileChooser.APPROVE_OPTION) {
          File unfiltered_picture = filec.getSelectedFile();
          //get the extension of the file
          extension=unfiltered_picture.getPath();
          int index=extension.indexOf(".");
          extension=extension.substring(index+1, extension.length());
          //if the file is not jpg, png, or jpeg, reject it and send a message to the user.
          if(!extension.matches("[jJ][pP][gG]") && !extension.matches("[pP][nN][gG]") && !extension.matches("[jJ][pP][eE][gG]")) {
             JOptionPane.showMessageDialog(null,
                                           "cannot load file. File must be of type png, jpeg, or jpg. \n Your file is of type " + extension,
                                            "Error: improper file",
                                            JOptionPane.OK_OPTION);
           //if the file is of the proper type, display it to the user on the img JLabel.
           } else {
              finalImage = ImageIO.read(unfiltered_picture);
              ImageIcon imgIcon = new ImageIcon();
              imgIcon.setImage(finalImage);
              img.setIcon(imgIcon);
              img.invalidate();
              h_divide.setValue(0);
              v_divide.setValue(0);
           }
       }
   } catch(IOException exception) {
        exception.printStackTrace();
   }

Danke.

InformationsquelleAutor corvid | 2013-04-11
Schreibe einen Kommentar