# Look And Feel, wie ändern?



## Webmaster Pazi (25. Okt 2009)

Hallo User!

Habe da eine Frage wie ich z.b. JButton den style "Windows" verpassen kann?

Wenn ich nur Button nehme, ist es der Windows-style, jedoch brauche ich JButton.

Ich hoffe ihr könnt mir bei dem problem helfen


----------



## javimka (25. Okt 2009)

Möglichst, bevor du irgend etwas mit GUI Komponenten gemacht hast folgenden Befehl aufrufen:
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");


----------



## MarcB (25. Okt 2009)

Vor dem Anzeigen der GUI folgendes machen:

```
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
System.err.println("Setting Look and Feel Failed");
}
```

Geht dann natürlich nur unter Windows so.


----------



## Wildcard (25. Okt 2009)

javimka hat gesagt.:


> Möglichst, bevor du irgend etwas mit GUI Komponenten gemacht hast folgenden Befehl aufrufen:
> UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");



Niemals direkt aufrufen, das funktioniert dann nämlich wirklich nur unter Windows. Die Variante von MarcB ist die richtige.


----------



## Webmaster Pazi (25. Okt 2009)

Hallo.

Dankeschön für die schnellen Antworten. Es Funktioniert auch alles, nur ist das leider nicht der Windows-style.

Kann man denn die Buttons und Textfelder selbst stylen (auch höhe und breite)?

ich würde das ja gerne mit HTML machen, aber das klappt nicht :noe:

Edit:

Es Funktioniert doch, nur möchte ich trotzdem die Farben, größe, textgröße usw. verändern.


----------



## Wildcard (25. Okt 2009)

Was heißt nicht der Windows Style? Wie sieht es aus und was erwartest du?


----------



## javimka (25. Okt 2009)

Wie sieht es denn aus? Und nach welchem Windows soll es aussehen?
Nein, mit HTML geht das nicht. Für das Anordnen brauchst du Layouts.


----------



## Webmaster Pazi (25. Okt 2009)

Also der Button ist so wie er ja sein soll, aber irgend wie, sind die eigabefelder so geblieben.


----------



## Wildcard (25. Okt 2009)

Wahrscheinlich war der aufruf von setLookAndFeel zu spät. Du musst das aufrufen bevor irgendein GUI Teil instanziert wurde.


----------



## javimka (25. Okt 2009)

Klappt das? Das Textfeld im nimmt im Windows Look einen anderen Font an.

```
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

public class WindowsLook extends JFrame {

	public WindowsLook() {
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setLayout(new FlowLayout());
		add(new JButton("Button"));
		add(new JTextField("Textfield",12));
		pack();
		setLocationRelativeTo(null);
	}

	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				try {
					UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
				} catch (Exception e) {
					System.err.println("Setting Look and Feel Failed");
				}
				JFrame frame = new WindowsLook();
				frame.setVisible(true);
			}
		} );
	}
}
```
Jetzt frage ich mich nur noch, ob man das L&F wohl besser über den EDT, wie ich es hier gemacht habe, setzen lassen soll oder bereits vorher? ( @Wildcard  )


----------



## Wildcard (25. Okt 2009)

javimka hat gesagt.:


> Jetzt frage ich mich nur noch, ob man das L&F wohl besser über den EDT, wie ich es hier gemacht habe, setzen lassen soll oder bereits vorher? ( @Wildcard  )


IMHO ist das ziemlich egal.


----------

