# [Linux] JFileChooser sieht komisch aus...



## Ivan Dolvich (19. Jan 2011)

Hi Leute,

zurzeit arbeite ich auf einem Linuxsystem mit Gnome als Window Manager.
Nun öffne ich wie gewohnt ein JFileChooser und... äh... was ist denn das?
Liegt das an meinem Window Manager? Kann ich mir kaum vorstellen, bin aber gerade dabei KDE zu installieren um das zu Testen. Oder mach ich etwas falsch?
Wenn ich bei Google nach "Linux java JFileChooser" oder "Gnome java JFileChooser" suche, finde ich schöne JFileChooser und nicht so ein... Ding.

Mach ich was falsch? Ideen?


```
JFileChooser chooser = new JFileChooser();
if (chooser.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION) {
  System.out.println ("Datei "+chooser.getSelectedFile()+
                        " ausgewählt.");
}
```


----------



## turing (19. Jan 2011)

Dein Code öffnet bei mir einen JFileChooser, der bei mir (ebenfalls Linux mit Gnome) exakt so aussieht, wie es ausehen soll (d.h. anders als dein Bild  )


----------



## Beni (19. Jan 2011)

Wenn ich mich recht entsinne ist der FileChooser vom LookAndFeel abhängig, probier mal ein anderes LaF aus.


----------



## Ivan Dolvich (19. Jan 2011)

Folgende LaFs sind verfügbar:

```
Metal
Nimbus
CDE/Motif
GTK+
```
Bei jedem sieht der JFileChooser gleich aus. Nur die Farben ändern sich geringfühgig.

In 10min kann ich sagen, ob es an meinem Window Manager liegt, obwohl ich es nicht glaube, da es mit CDE/Motif bzw. UIManager.getCrossPlatformLookAndFeelClassName() auch so aussieht, und das dann nichts mehr mit dem Window Manager zu tun haben dürfte...

[EDIT:]
Jop... der Window Manager ist egal. Mit KDE siehts gleich aus. (Auch wenn ich jetzt wieder weiß, warum ich Gnome nutze...  )


----------



## Beni (19. Jan 2011)

Ah, da fällt mir noch was ein: was für ein Java verwendest du unter Linux? Viele Distributionen haben GNU Java per default aktiviert, evtl. musst du noch das sun-java (bzw. müsste das langsam oracle-java heissen...) installieren.

Kannst mit "java -version" schnell herausfinden, was bei dir läuft.


----------



## Ivan Dolvich (19. Jan 2011)

Daran hatte ich auch schon gedacht.
Da ich Eclipse benutze hab ich einfach die JDKs ausgetauscht, selbes Ergebnis...

Hab bei Google nocheinmal gesucht ("Linux JFileChooser") und nur noch diese Seite hier gefunden:
Issue 26 - desklets - java.awt.FileDialog is ugly under Linux - Project Hosting on Google Code
Ich nutze den JFileChooser und nicht das FileDialog (Wobei ich gerade gemerkt habe, dass ich ein Screenshot vom FileDialog hochgeladen habe. Egal, bleibt das selbe Problem). Ich nutze JDK 6.
Kann doch nicht sein, dass ich als einziger so ein Problem habe oder?


----------



## HoaX (19. Jan 2011)

Evtl setzt du einfach das LnF zu spät? Machs mal als erste Zeile in deine main.


----------



## Ivan Dolvich (19. Jan 2011)

Das ist meine Main:

```
public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				try {
					UIManager.setLookAndFeel(UIManager
							.getSystemLookAndFeelClassName());
				} catch (Exception e) {
					e.printStackTrace();
				}
				new Editor().setVisible(true);
			}
		});
	}
```

[EDIT:]
Ohne selbst definiertes LaF gehts... 
Dann sieht es so aus, wie es aussehen soll. Warum tut es das nicht, wenn ich das LaF änder?


----------



## Wildcard (19. Jan 2011)

```
UIManager.getSystemLookAndFeelClassName()
```
Was gibt das denn bei dir aus (der Klassenname)?
Vermutlich ist das bei dir aus irgendeinem Grund Motif.


----------



## Ivan Dolvich (19. Jan 2011)

Hi Wildcard,

nicht ganz:

```
com.sun.java.swing.plaf.gtk.GTKLookAndFeel
```


----------



## L-ectron-X (19. Jan 2011)

Vielleicht hilft es, wenn du das LAF wirklich in den ersten Zeilen setzt, also noch vor SwingUtilities.invokeLater()...


----------



## Ivan Dolvich (19. Jan 2011)

macht leider keinen unterschied.
Ich hab auch schon versucht einfach mal eine Sekunde zu warten zwischen UIManager und SwingUtilities und SwingUtilities.updateComponentTreeUI( frame ) hilft auch nicht... args...


----------



## Ivan Dolvich (21. Jan 2011)

Ich hab ein Workaround gefunden:
GTKFileChooser
diese Erweiterung überschreibt die UI-Einstellung für den JFileChooser. Also kann man den JFileChooser weiter verwenden.
Laut der Website ist das GTK+-LookAndFeel einfach veraltet.


----------

