# Look And Feel greift nicht im Hauptfenster (JFrame)!



## Olli_79 (15. Mrz 2007)

Hi!

Ich habe das Problem, dass ein von mir verwendetes Look And Feel nicht in meinem Hauptfenster greift. Warum das so ist, kann ich nur bedingt nachvollziehen. Ich habe eine Klasse, die zum Einen eine JProgressBar und mein Hauptfenster (JFrame) erzeugt. In der Klasse meines Hauptfenster setze ich dann das Look And Feel als erstes im Kontsruktor. Nun könnte ich ja vielleicht verstehen. dass das Look And Feel nicht greift, da das Fenster vor dem Setzen erzeugt wird! Was ich aber nicht verstehe: Ich setze das Look And Feel an allererster Stelle! Auch ein Versuch das L&F in der "Startklasse" zu setzen ist gescheitert. Was kann ich machen??? Man muss doch irgendwie das Hauptfenster mit dem L&F aktualisieren können... Bitte helfen!!!

Danke
Olli_79


----------



## The_S (15. Mrz 2007)

Du kannst das Look-And-Feel auch schon in der Main-Methode deiner Klasse setzen. Dann sollte es funktionieren.


----------



## Olli_79 (15. Mrz 2007)

Die Main-Methode liegt in einer Klasse, die lediglich Objekte der JProgressBar und des Hauptfenster erzeugt. Diese Klasse ist von keiner anderen Klasse abgeleitet: sprich hat garnichts mit Swing zu tun. Für einen Test hatte ich das L&F dort einmal gesetzt und die Klasse von JFrame abgeleitet. Leider ohne Erfolg! Was tun???   

Gruss
Olli_79


----------



## The_S (15. Mrz 2007)

Also bei mir spielt das nie eine Rolle  .

Es ist egal von was deine Klasse erbt, da sich alles in einer VM abspielt. Einfach in der Main-Klasse das LaF setzen und anschließend die Instanzen deiner GUI-Objekte erzeugen!


----------



## L-ectron-X (15. Mrz 2007)

Beispielcode:

```
import javax.swing.UIManager;

public class Main {

   public Main() {
      try {
         //UIManager.setLookAndFeel("org.gtk.java.swing.plaf.gtk.GtkLookAndFeel");
         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); //LAF des OS
      }
      catch(Exception e) {
         e.printStackTrace();
      }
      
      new MainFrame().setVisible(true); //Hauptfenster instanziieren und anzeigen
   }
   
   public static void main(String[] args) {
      new Main();
   }
   
}
```


----------



## Guest (15. Mrz 2007)

L-ectron-X hat gesagt.:
			
		

> ```
> import javax.swing.UIManager;
> ```



Das habe ich natürlich noch nicht ausprobiert! Werde ich heute Abend dann aber machen! Erstmal vielen, vielen Dank!


----------



## Olli_79 (15. Mrz 2007)

Es geht nicht...!   Noch Vorschläge???


----------



## The_S (15. Mrz 2007)

Zeig mal Code, kann gar net sein, dass das nicht geht!


----------



## Guest (15. Mrz 2007)

HAUPTKLASSE (hier hatte ich auch schon das Look & Feel gesetzt!!!):


```
public class My_Class {
       // Hauptfunktion
       public static void main(String args[]) {
              // ProgressBarThread erzeugen und damit Ladestatus anzeigen
              ProgressBarThread aProgressBarThread = new ProgressBarThread();
              aProgressBarThread.start();

              // GUI erzeugen
              HT_GUI myGUI = new HT_GUI();
              // GUI - Thread starten
//              myGUI.run();
       }

}
```



HT_GUI:


```
[...]

              try {
                        UIManager.setLookAndFeel("de.muntjak.tinylookandfeel.TinyLookAndFeel");
                        SwingUtilities.updateComponentTreeUI(this);
              } catch (UnsupportedLookAndFeelException e) {
                        System.err.println("LAF-BUG: " + e.toString());
              } catch (ClassNotFoundException e) {
                        System.err.println("LAF-BUG: " + e.toString());
              } catch (InstantiationException e) {
                        System.err.println("LAF-BUG: " + e.toString());
              } catch (IllegalAccessException e) {
                        System.err.println("LAF-BUG: " + e.toString());
              }

[...]
```



*Merkwürdig ist, dass alle Komponenten bis auf JFrames und JOptionPanes korrekt angezeigt werden!!!*[/quote]


----------



## Olli_79 (15. Mrz 2007)

Ich habe es geschafft...     

Wenn man das Folgende noch mit einbindet, funktioniert es...:



> JFrame.setDefaultLookAndFeelDecorated(true);
> JDialog.setDefaultLookAndFeelDecorated(true);


----------



## The_S (15. Mrz 2007)

? Das sollte normal Standardmäßig auf true sein ...


----------



## Roar (15. Mrz 2007)

nö


----------

