Look and Feel Problem

Status
Nicht offen für weitere Antworten.

Bernasconi

Mitglied
Hallo.

Leider habe ich im Internet und auch hier im Forum für mein spezifisches Problem noch keine Lösung gefunden. Ich denke das Problem sollte einfach zu lösen sein und ich komme einfach nicht drauf -.-

Also folgendes Bild:
lnfix4.jpg


Mein Look&Feel sollte also Windows sein.
Die Menüleiste wird eigentlich richtig dargestellt.
Allerdings die Menüs selber sehen überhaupt nicht Windows like aus.

Wiso denn das?
Wie kann ich das besser hinbekommen?
Ich finde es so, wie es ist, sehr sehr sch****e.

Dann doch lieber Metal-Look'n'Feel.
Aber am liebsten hätte ich Windows.

Nur wie? Ich hoffe es kann mir jemand helfen.

Code:
package cdverwaltung;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Hauptfenster 
{

	JFrame form;
	MenuDateiBeendenListener menuDateiBeendenListener = new MenuDateiBeendenListener();
	MenuDateiOeffnenListener menuDateiOeffnenListener = new MenuDateiOeffnenListener();
	MenuDateiSpeichernListener menuDateiSpeichernListener = new MenuDateiSpeichernListener();
	MenuInfoAboutListener menuInfoAboutListener = new MenuInfoAboutListener();
		
	public Hauptfenster() 
	{
		super();
		
		try 
		{
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
        catch(Exception e) {
            e.printStackTrace();
        } 
		
		form = new JFrame("CD-Verwaltung - © 2007 Claudio Bernasconi" );
		form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		form.setSize(800, 600);
		
		Toolkit toolkit = Toolkit.getDefaultToolkit();
	    Dimension d_aufloesung = toolkit.getScreenSize();
	    
	    form.setLocation( d_aufloesung.width / 2 - 400, d_aufloesung.height / 2 - 300 );

Aufgerufen wird ganz normal mit
Code:
new Hauptfenster();
 
Setze das Look & Feel früher (z.B. in main) bzw. nicht im Konstruktor der Klasse.
Zum Zeitpunkt, wo die Menüeinträge erstellt werden, ist bei dir das Look & Feel noch nicht
gesetzt (lokale Variablen werden initialisiert bevor der Konstruktor ausgeführt wird)
 
lnf2xg4.jpg

Wie man sehen kann gibt es keinen Unterschied. Ich kann mir nicht vorstellen warum.
Ich habe jetzt die Anweisung in die Mainfunktion der Klasse geschrieben. Weiter "vorne" kann ich sie nicht mehr platzieren.

Weiss jemand Rat? Ich bitte darum.
 
Ich verstehe nicht so ganz, was da nicht Windowsmäßog aussehen soll, mal ganz davon abgesehen, dass ich kein Windows verwende. Was Du meinst, ist vemutlich der fehlende Schatten. Da Swing alle Elemente selbst zeichnet, fehlt eben der Schatten. Windows legt ihn nicht darum, da Windows das Menü nicht gezeichnet hat, und Swing weiß nicht, ob unter Windows der Schatten aktiviert ist, oder nicht. Das Problem kann man also nicht lösen.

Wenn Du AWT statt SWING benutzt, hast Du hingegen einen Schatten. (Im Wahrsten Sinne des Wortes). Denn dann sieht nämlich der Rest scheiße aus. In diesem Fall zeichnet Windows die Elemente.

Auf Metal setzt Du das ganze folgender Maßen:

Code:
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");

MfG
DeeDee0815
 
Hm... Wenn ich mein Windows XP auf Grau stelle, sehen die Menüs in allen Programmen genauso aus... Ich verstehe dein Problem nicht.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben