Swing JFileChooser - Dateinamen nicht editierbar machen

fittich

Mitglied
Hallo zusammen,

ich hab schon danach gesucht, auch hier im Forum, hab aber irgendwie keine richtig helfende Antwort gefunden.
Ich möchte, dass die Dateinamen im JFileChooser nicht editierbar sind. Das hört sich doch erstmal einfach an, oder? ???:L Scheint es aber nicht zu sein.

Kann mir jemand helfen?

Gruß
 
> UIManager.put("FileChooser.readOnly", Boolean.TRUE);
Das hatte ich auch schon gefunden und getestet, allerdings funktioniert das bei mir nicht, da im Code manuell ein remove auf eine Komponente des choosers aufgerufen wird und ich dann eine "java.lang.IllegalArgumentException: index greater than the number of items" Expception bekomme.
 
Ja, der JFileChooser wurde etwas angepasst, damit er anders aussieht.

Bei dieser Zeile wird die Exception geschmissen:

Code:
((JComponent)chooser.getComponent(2)).getComponentPopupMenu().remove(2);
 
und dir kommt nicht in Sinn, dass du diese unsaubere Code-Zeile jetzt wohl anpassen musst, versuche irgendwo Index 1 statt 2 usw?
na wie auch immer, wenn du solche Aktionen magst, dann ist der zweite von mir gepostete Link vielleicht noch besser geeignet,

allgemein kann nun wirklich nicht mehr als den FileChooser.readOnly-Property erwarten, falls er denn funktioniert,
selbst wenn es eine ganz normale Methode setReadOnly() gäbe, müsste man damit rechnen, dass sich die interne Komponenten-Struktur ändert,
deine eigene Spezialitäten musst du schon nachrangig korrigieren, nicht andersrum..

wenn der Code nicht von dir ist sondern von einer verwendeten Library, dann ist es Pech, manchmal passt nicht alles zusammen,
wie gesagt hilft vielleicht noch der zweite Link, vor oder nach dem anderen Code ausgeführt
 
Ich hab jetzt verstanden, warum die Exception auftritt.

Code:
((JComponent)chooser.getComponent(2)).getComponentPopupMenu().remove(2);

Die Zeile sollte den Menüpunkt "Neuer Ordner" entfernen, wenn man im File Chooser das Kontextmenü aufruft. Dadurch, dass ich nun
Code:
UIManager.put("FileChooser.readOnly", Boolean.TRUE);
verwende, ist dieser Menüpunkt aber schon gar nicht mehr vorhanden, was bei readonly ja Sinn macht.
 

Neue Themen


Zurück
Oben