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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie bauen Ihre
JFileChooser
mit dem Verzeichnis, das Sie starten möchten, und übergeben Sie dann einenFileFilter
in es, bevor Sie sichtbar.Diesem Beispiel Filter für Dateien mit der Endung ".png" oder ".jpg".
new File
im Konstruktor. Wo der code sagt "Datei starten". Sowas wie neueFile(System.getProperty("user.home"), "Pictures")
funktionieren sollte.FileSystemView
docs.oracle.com/javase/6/docs/api/javax/swing/filechooser/... zu finden home-Verzeichnis des Benutzers. Von dort ist es ein Ratespiel, basierend auf Windows xp/7/8/9/10/etc...Lesen Sie die API: http://docs.oracle.com/javase/6/docs/api/javax/swing/JFileChooser.html
Ganz oben in der javadoc-Seite ist ein Beispiel für fast genau das, was Sie tun möchten:
Die Klasse, die Sie suchen, im Allgemeinen ist
FileFilter
, was Abstrakt ist. Finden Sie in der javadoc: http://docs.oracle.com/javase/6/docs/api/javax/swing/filechooser/FileFilter.htmlSetzen Sie alle in eine prägnante form, hier ist eine flexible Datei-Auswahl-routine. Es gibt erste Verzeichnis-und Datei-Typ und es liefert das Ergebnis als Datei oder ein kompletter Pfad-Namen. Möglicherweise möchten Sie auch um Ihr gesamtes Programm in native interface-Modus, indem die setLookAndFeel Befehl an der Haupt-Einstiegspunkt in dein Programm.