Swing FileChooser mit einem neuen Rootordner

DKing

Mitglied
Hallo,
ich würde gerne den JFileChooser so modifizieren, dass dieser einen anderen Ordner als root-Folder hat. Aus diesem darf man nicht rausnavigieren können. Aber es soll möglich sein, in Unterordner zu wandern.

Ich habe schon ein paar Dinge versucht, wie z.B. das FileSystemView zu ändern. Jedoch hackt es da an allen seiten, hat jemand da Erfahung?

Schöne Grüße
 

DKing

Mitglied
Filefilter sind gesetzt, damit ich nur Dateien mit einer von mir gewählten Endung wählen kann. Aber damit beschränkt man doch nicht die Navigation in Parent-Dirs eines von mir gewählten Rootordners oder?

Ich kriege einfach nicht einen rootfolder gewählt, in dem ich "gefangen" bin.
 
G

Gast2

Gast
Also folgendes sorgt z.b. schonmal dafür, dass du nur Dateien auswählen kannst die im home folder liegen (den kannst du ja einfach gegen nen eigenen deiner Wahl austauschen):

Java:
    public static void main ( String [] args ) throws IOException {
    	JFileChooser fc = new JFileChooser(new File(System.getProperty("user.home")));
    	fc.setFileFilter(new MyFileFilter());
    	
    	fc.showOpenDialog(null);
    }
    
    private static class MyFileFilter extends FileFilter {
    	private final String userHome = System.getProperty("user.home");
    	
		@Override
		public boolean accept(File f) {
			return f.getAbsolutePath().contains(userHome);
		}
		
		@Override
		public String getDescription() {
			return "home folder filter";
		}    	
    }
Das ist natürlich noch sehr rudimentär, du kannst z.b. noch aus deinem home folder rausnavigieren und kommst dann unter umständen nichtmehr rein ;)
Aber vllt bringts dir ja nen paar Ideen.
 

DKing

Mitglied
Vielen Dank,
ich kriege es aber leider nicht hin, dass es "gut" läuft. Ich will wirklich nur einen von mir gewählten Ordner anzeigen. Es soll keine Möglichkeit geben, diesen zu verlassen. Nur Unterordner sind erlaubt.

Ärgere mich schon einige Stunden damit rum und habe keine vernünftige Lösung finden können.
 
G

Gast2

Gast
Dann experimentier damit etwas rum, du kannst z.b. einfach das "Suchen in" Panel verschwinden lassen:

Java:
    public static void main ( String [] args ) throws IOException {
    	JFileChooser fc = new JFileChooser(new File(System.getProperty("user.home")));
    	fc.setFileFilter(new MyFileFilter());
    	fc.remove(fc.getComponent(0));
    	fc.invalidate();
    	
    	fc.showOpenDialog(null);
    }
Dann hat der User keine Möglichkeit mehr eine ebene höher zu springen (kombiniert mit dem FileFilter natürlich).
Wenn du das Panel brauchst, da gibts ja noch nen paar mehr knöpfchen, dann ist die lösung so natürlich nichts.
 

Michael...

Top Contributor
Hier mal ein etwas älterer Code von mir der eine angepasste FileSystemView mit einem FileFilter kombiniert, diente damals dazu, dass Dateien nur von Netzlaufwerken geladen bzw. nur dort hin gespeichert werden konnten.

Eventuell kannst Du darauf aufbauen.
Java:
import java.io.*;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileSystemView;
import javax.swing.filechooser.FileFilter;

public class FileChooserTest {
	private static JFileChooser fileChooser;
	
	public static void main(String[] args) throws Exception{
		
		fileChooser = new JFileChooser();
		RestrictedFileSystemView fsView = new RestrictedFileSystemView(fileChooser.getFileSystemView());
		
		fileChooser.setFileSystemView(fsView);
		fileChooser.setCurrentDirectory(fsView.getHomeDirectory());
		fileChooser.addChoosableFileFilter(fsView.getFileFilter());
		fileChooser.setAcceptAllFileFilterUsed(false);
		
		fileChooser.showOpenDialog(null);
	}
}

class RestrictedFileSystemView extends FileSystemView {
	private File[] roots;
	
	public RestrictedFileSystemView(FileSystemView fsView) {
		roots = File.listRoots();
		java.util.Vector r = new java.util.Vector();
		
		for (int i=0; i<roots.length; i++) {
			if (fsView.getSystemTypeDescription(roots[i]).equalsIgnoreCase("Netzlaufwerk"))
				r.add(roots[i]);
		}
		roots = new File[r.size()];
		for (int i=0; i<r.size(); i++) {
			roots[i] = (File)r.get(i);
		}
	}
	
	public File createNewFolder(File file) throws IOException {
		return null;
	}
	
	public File getHomeDirectory(){
		return this.roots[0];
	}
	
	public File getDefaultDirectory() {
		return this.roots[0];
	}
	
	public File[] getRoots() {
		return this.roots;
	}
	
	public FileFilter getFileFilter() {
		return new FileFilter() {

			public boolean accept(File file) {
				for (int i=0; i<roots.length; i++) {
					if (file.getAbsolutePath().startsWith(roots[i].toString()))
						return true;
				}
				return false;
			}

			public String getDescription() {
				return "nur Netzwerkzugriff";
			}
		};
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Fehlermeldungen bei Cancel FileChooser AWT, Swing, JavaFX & SWT 7
Bluedaishi FileChooser.ExtensionFilter AWT, Swing, JavaFX & SWT 4
C FileChooser Save-Dialog zeigt Files nicht an AWT, Swing, JavaFX & SWT 3
GenerationLost JavaFX FileChooser speichern ohne Zieldatei? AWT, Swing, JavaFX & SWT 12
N Swing Filechooser zweifarbig machen AWT, Swing, JavaFX & SWT 33
N Swing Zweifarbiges Layout für den Filechooser AWT, Swing, JavaFX & SWT 12
B FileChooser anpassen AWT, Swing, JavaFX & SWT 2
X Bild via FileChooser in paint-Methode laden AWT, Swing, JavaFX & SWT 2
N FileWriter mit FileChooser AWT, Swing, JavaFX & SWT 3
D Swing JOptionPane + FileChooser .. Reihenfolge wichtig!? AWT, Swing, JavaFX & SWT 7
M FileChooser Bilder auswählen AWT, Swing, JavaFX & SWT 8
kodela FileChooser mit "absolutem" Root-Verzeichnis öffnen AWT, Swing, JavaFX & SWT 2
L Filechooser File Öffnen AWT, Swing, JavaFX & SWT 4
N FileChooser in View AWT, Swing, JavaFX & SWT 3
E Swing filechooser - nur Netzwerkpfade anzeigen lassen AWT, Swing, JavaFX & SWT 14
H FileChooser und Filter AWT, Swing, JavaFX & SWT 4
F Problem mit Mehrfachauswahl bei Filechooser AWT, Swing, JavaFX & SWT 2
G Fragen zum FileChooser AWT, Swing, JavaFX & SWT 5
G FileChooser Bild Speichern AWT, Swing, JavaFX & SWT 3
G FileChooser AWT, Swing, JavaFX & SWT 5
R filechooser soll sich das Verzeichnis merken AWT, Swing, JavaFX & SWT 2
K Bilddatei mit Filechooser auswählen und anzeigen/impotieren AWT, Swing, JavaFX & SWT 18
G FileChooser - Größe (Dimension) ändern AWT, Swing, JavaFX & SWT 2
V System Look and Feel, FileChooser, Optionen einer jar-Datei AWT, Swing, JavaFX & SWT 10
M bei filechooser.showSaveDialog(null); auf Datein. zugreifen AWT, Swing, JavaFX & SWT 2
U FileChooser Layout - Threads? AWT, Swing, JavaFX & SWT 17
D FileChooser der anderen Art. AWT, Swing, JavaFX & SWT 2
C falsche Pfadangabe bei FileChooser AWT, Swing, JavaFX & SWT 7
W Vorschau mit FileChooser: Ereignis bei Datei ausgewählt? AWT, Swing, JavaFX & SWT 4
H FileChooser AWT, Swing, JavaFX & SWT 5
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
S Swing zu einem Datum Tage addieren/subtrahieren AWT, Swing, JavaFX & SWT 6
E Swing Mausposition auf einem JFrame erkennen AWT, Swing, JavaFX & SWT 5
Jose05 NullPointerException bei Beschreiben eines Labels aus einem Array AWT, Swing, JavaFX & SWT 12
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
2 JavaFX die ChoiceBox leitet den String nicht weiter oder es komm zu einem NullPointer AWT, Swing, JavaFX & SWT 8
L JavaFX javafx.fxml.LoadException bei einem Taschenrechner AWT, Swing, JavaFX & SWT 5
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
N Nur bei einem Textfiled Nullpointerexception bei getText() AWT, Swing, JavaFX & SWT 1
H JComobox in einem JPopupNeu AWT, Swing, JavaFX & SWT 7
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
Z Mit einem Button einen anderen Button Triggern AWT, Swing, JavaFX & SWT 3
D AWT Wie kann ich ein Frame von einem anderen aus beeinflussen? AWT, Swing, JavaFX & SWT 7
T Setzen von der Schriftgröße bei einem Shell AWT, Swing, JavaFX & SWT 15
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
J Fenster mit Inhalten aus einem Array Füllen AWT, Swing, JavaFX & SWT 4
D JavaFX Ein Parameter von einem Stage(GUI) zu einem anderen übergeben AWT, Swing, JavaFX & SWT 6
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
S JavaFX Variablen in einem FXML File verwenden AWT, Swing, JavaFX & SWT 8
A Objekt von einem Window erstellen? AWT, Swing, JavaFX & SWT 8
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
ralfb1105 JavaFX Alert Confirmation Dialog aus einem Service Thread AWT, Swing, JavaFX & SWT 8
F JavaFX Aktuelle Zeit in einem TextField anzeigen AWT, Swing, JavaFX & SWT 7
M JavaFX Bild zur ImageView in einem Kreis anzeigen. AWT, Swing, JavaFX & SWT 4
F JavaFX PNG aus einem resource Ordner laden AWT, Swing, JavaFX & SWT 8
F JavaFX Checken ob der Input einem festgelegten Format gleicht AWT, Swing, JavaFX & SWT 7
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
cool_brivk24 BufferedImage einem ClickEvent hinzufügen AWT, Swing, JavaFX & SWT 13
Q-bert Doppelclick auf einem List item AWT, Swing, JavaFX & SWT 9
J JavaFX von einem Array aus Buttons herausfinden auf welcher geklickt wurde aus dem Array. AWT, Swing, JavaFX & SWT 1
C SWT autosize bei gc.drawString() auf einem Label AWT, Swing, JavaFX & SWT 7
R Farbe zu einem Eckpunkt generieren AWT, Swing, JavaFX & SWT 2
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
F abgeleitete Panels von einem ContentPanel AWT, Swing, JavaFX & SWT 4
heinz ketchup While-Schleife in einem Service für GUI AWT, Swing, JavaFX & SWT 22
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
H Hintergrundbild in einem Programm AWT, Swing, JavaFX & SWT 4
F RGB-Werte aus einem String einlesen AWT, Swing, JavaFX & SWT 26
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
I JavaFX Fenster wird auf einem anderen Rechner anders dargestellt AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
L JavaFX Mehrere JavaFX Szenen mit einem Menü AWT, Swing, JavaFX & SWT 1
L JavaFX Klickverhalten bei einem Panel AWT, Swing, JavaFX & SWT 1
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
Y Darstellung und MouseHover bei bestimmten Wörtern in einem String AWT, Swing, JavaFX & SWT 2
GreenTeaYT Wie vergebe Ich den Jframe Title den Namen aus einem Element von der Arraylist ? AWT, Swing, JavaFX & SWT 4
H Geld pro Sekunde in einem Clickerspiel AWT, Swing, JavaFX & SWT 4
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Ghostman1711 Hinzufügen ausgewählter Dateinen des Filechoosers zu einem JTable AWT, Swing, JavaFX & SWT 9
T AWT Farben in einem Bild ändern AWT, Swing, JavaFX & SWT 8
R Swing JLabel berührung an einem anderen Label prüfen AWT, Swing, JavaFX & SWT 3
M Text in einem Label fett setzen AWT, Swing, JavaFX & SWT 4
E Swing Copy und Paste eines einzelnen Knoten aus einem JTree AWT, Swing, JavaFX & SWT 1
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
K JavaFX Mehrere Cell Editors in einem TreeView Item AWT, Swing, JavaFX & SWT 2
F JavaFX JavaFX - Hintergrundmusik in einem seperatem Task/Service AWT, Swing, JavaFX & SWT 6
D JavaFX Gesetzte Variable in einem Controller im Controller laden AWT, Swing, JavaFX & SWT 1
D Swing JCombobox in einem JTable vorbelegen AWT, Swing, JavaFX & SWT 4
T Swing JTable Zeile mit ausgelesenen Werten mit Hilfe von einem Button hinzufügen AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben