2010-06-15 18 views
6

Ich erstelle einen Baum von Ordnern und Dateien in Java. Windows und OSX kehrt das System Symbole und Namen mit dem folgenden Code:Wie bekomme ich die Linux-Ordner und Datei-Icons und Namen in Java?

new JFileChooser().getIcon(File f); 
new JFileChooser().getName(File f); 

Gibt es eine Möglichkeit, die Symbole und Namen von Unix-Systemen zu bekommen ?. Ein Systembefehl wäre auch in Ordnung.

Danke.

+0

Problem: Ich vermute, es würde von der Umwelt abhängen - ist es Gnome? KDE? XFCE? Eine andere, weniger verbreitete Umgebung? Aus diesem Grund würde eine Cross-Desktop-Lösung viel Arbeit und Wartung erfordern - und das sehe ich nicht. Kann aber nicht sicher sein. –

+0

Eine Lösung für die am weitesten verbreiteten Display-Manager würde ausreichen. –

Antwort

2

Kommentar nicht hinzufügen können, um eine Antwort zu veröffentlichen:

Werfen Sie einen Blick auf https://stackoverflow.com/questions/1629172/how-do-you-get-the-icon-mime-type- and-application-associated-with-a-file-in-the

All diese Antworten werden Sie dazu bringen, sich in C oder C++ die Hände schmutzig zu machen. Java reimte nie wirklich mit gebürtigem Aussehen und Gefühl ...

+0

Versuchen, das zu lösen, ohne eine ausführbare Datei in C oder C++ zu erstellen. Eine Antwort erwähnt xdg-Mime. Ich werde es zuerst damit versuchen. –

0

ich nicht getestet habe, aber dieser Code sollte auf den meisten Systemen arbeiten:

FileSystemView view = FileSystemView.getFileSystemView(); 
Icon icon = view.getSystemIcon(file); 
+1

Nein. Habe das schon versucht. Es gibt nur einige Icons für Windows-System, für OSX und Unix erhalten Sie das Standardverzeichnis und Ordnersymbol der Benutzeroberfläche. Also wechselte ich zu JFileChooser(). GetIcon (Datei f), die die Datei- und Ordnersymbole für Windows und OSX zurückgibt. –

0

Sie können immer den Namen des Systems erhalten, an dem Sie arbeiten, Java erlaubt Ihnen, eine native Ausführung zu machen und die Ergebnisse davon zu erfassen (Befehlszeile, so für unix flavors, Runtime.exec ("uname -a");) dann parse die Ergebnisse im Ausgabestream.

Allerdings gibt es eine Reihe von verschiedenen Implementierungen von GUI-Schichten auf einem Unix-Kernel, und es gibt nicht eine Standardmethode zum Abrufen der Zuordnungen zwischen Dateitypen und Symbolbildern. Sie können eine für einen Fenstermanager spezifische Lösung erstellen, müssen jedoch Ihren Algorithmus basierend auf dem verwendeten wm ändern.

+0

Derzeit arbeiten wir an einer spezifischen Implementierung für den Fenstermanager. Eine Antwort im Link von user3368151 erwähnt xdg-mime, die ich versuche zu verwenden. Bis jetzt bekomme ich nur eine Desktop-Datei (kein absoluter Pfad, nur der Name). Irgendeine Idee, wie man weitermacht? –