Look and Feel ändern geht nicht, obwohl es geht.

Status
Nicht offen für weitere Antworten.

tobitobsen82

Mitglied
Hallo Leute,

habe neben einigen andren Klassen eine MainKlasse, in der ich per Konstruktor ein Fenster mit einigen Elementen und einem Menü erzeuge. In dem Menü gibt es einen Menüpunkt "look and feel", in diesem man durch Klicken auf ein JMenuItem das LaF ändern können soll.

Der ActionListener/Adapter funktioniert, da ich eine Ausgabe erhalte, die ich an dieser Stelle testesweise eingebaut habe. Die LaF-Ändern-Methode sollte eigentlich auch gehen, da ich das ganze mit einer try/catch Anweisung gemacht habe und keine Fehlermeldung erhalte. Einzig was nicht geht, scheint das tatsächliche Ändern zu sein. Bekomme keine gewünschte Windows-Metal-Motif Variante meines Fensters angezeigt, sondern lediglich den Standard und kleine Änderungen direkt im Menu, wenn ich z. B. auf Windows klicke. Allerdings nur auf dem Menüpunkt, den ich gerade dann angeklickt habe und auch in einer Variante, die mit Windows oder Motif reichlich wenig zu tun hat.

Was mache ich falsch?

Hier der Quellcode.

Danke für Eure Hilfe!

Code:
package listener;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.plaf.basic.BasicOptionPaneUI.ButtonActionListener;
import javax.swing.text.JTextComponent;
import javax.swing.JComponent;

public class Fenster{

	/**
	 * Dateiname: Fenster.java
	 * Compiler: Eclipse SDK 3.2.1
	 * Autor: Tobias Fickinger
	 * Erstellungsdatum: 17.04.07
	 * Letzte Änderung: 23.04.07
	 * Beschreibung des Moduls: Hauptprogramm zur Anzeige eines simplen Fensters ohne Ereignisse. Methoden werden größtenteils aus der Klasse FensterElemente bezogen
	 * Paket: fenster (zusammen mit: FensterElemente.java)
	 */
	public static void main(String[] args) {
		// Instanzierung des Fensterobjekts
		ReservierungsFenster fensterobjekt = new ReservierungsFenster();
		// Sichtbarkeit festlegen
		Menu menu = new Menu();
		fensterobjekt.setJMenuBar(menu.setMenuBar());
		fensterobjekt.setVisible(true);
	}	
}

class ReservierungsFenster extends JFrame{
	private static final long serialVersionUID = 1L;
	public JTextField nameField;
	public JTextField emailField;
	public JButton buttonOK;
	public JTextArea textArea;
	public String dateiPfad;
	public String textAreaContent;
	
	public ActionListener meinActionListener = new EventHandling();
	// Konstruktoren
	
	public ReservierungsFenster(){
		// Konstruktoraufruf mit Parameter für Titelname des Fensters
		this("Platzreservierung");
	}
	
	public ReservierungsFenster( String titel ){
		super(titel);
		setSize(420,400);
				
		//Elemente holen
		FensterElemente element = new FensterElemente();

		// Gridbaglayout holen
		
	    GridBagLayout gbl = new GridBagLayout();
	    GridBagConstraints constr = new GridBagConstraints();

	    // ContentPane holen
	    
	    Container cpane = this.getContentPane();
	    cpane.setLayout (new BorderLayout());
	    
	    // Panels holen und mit GridBagLayout versehen

	    JPanel topPanel = new JPanel();
	    JPanel downPanel = new JPanel ();
	    topPanel.setLayout(gbl);
	    downPanel.setLayout(gbl);
	    
	    // Panel "oben" mit Elementen aus der Klasse FensterElemente füllen
	    
	    //JLabel erstellen
	    constr.gridx = 1;	//Spalte
	    constr.gridy = 0;	//Zeile
	    constr.anchor = GridBagConstraints.CENTER;	    
	    topPanel.add(element.createJLabel("Sitzplatzreservierung"), constr);
	    
	    //JLabel erstellen
	    constr.gridx = 0;
	    constr.gridy = 1;
	    constr.anchor = GridBagConstraints.EAST;
	    topPanel.add(element.createJLabel("Name"), constr);
	    
	    //TextField erstellen
	    constr.gridx = 1;
	    constr.gridy = 1;
	    constr.anchor = GridBagConstraints.EAST;
	    nameField = element.createTextField(20);
	    topPanel.add(nameField, constr);	    
	    
	    //JLabel erstellen
	    constr.gridx = 0;
	    constr.gridy = 2;
	    constr.anchor = GridBagConstraints.EAST;
	    topPanel.add(element.createJLabel("Email"), constr);	    

	    //TextField erstellen
	    constr.gridx = 1;
	    constr.gridy = 2;
	    constr.anchor = GridBagConstraints.EAST;
	    emailField = element.createTextField(20);
	    topPanel.add(emailField, constr);
	    
	    //Button erstellen
	    constr.gridx = 2;
	    constr.gridy = 3;
	    constr.anchor = GridBagConstraints.WEST;
	    buttonOK = element.createButton("OK");
	    topPanel.add(buttonOK, constr);
	    EventHandling bl = new EventHandling(); 
	    buttonOK.addActionListener(bl);	    

	    //TextArea erstellen
	    constr.gridx = 1;
	    constr.gridy = 4;
	    constr.anchor = GridBagConstraints.CENTER;
	    textArea = element.createTextArea(3,19,textAreaContent);
	    topPanel.add(textArea, constr);  

	    //Panel "unten" mit Elementen aus der Klasse FensterElemente füllen

	    //RadioButtons erstellen
	    constr.gridx = 0;
	    constr.gridy = 1;
	    constr.anchor = GridBagConstraints.WEST;
	    String[] title = new String[]{"Raucher", "Nichtraucher"};
	    boolean[] active = new boolean[]{ true, false};
	    downPanel.add(element.createRadioButtons(title, active), constr);

	    //ComboBox erstellen
	    constr.gridx = 1;
	    constr.gridy = 1;
	    constr.anchor = GridBagConstraints.NORTHWEST;
	    String[] content = new String[]{"Fensterplatz","Mittelgang","Loge","Schlafplatz"};
	    downPanel.add(element.createComboBox(content), constr);
	    
	    //Leeres JLabel erstellen
        constr.gridx = 2;
        constr.gridy = 1;
        constr.anchor = GridBagConstraints.WEST;
        downPanel.add(element.createEmptyJLabel(30), constr);	    

        //Checkboxen erstellen
	    constr.gridx = 3;
	    constr.gridy = 1;
	    constr.anchor = GridBagConstraints.EAST;
	    constr.gridwidth = GridBagConstraints.REMAINDER;
	    String[] inhalt = new String[]{"Handgepäck","Koffer"};
	    boolean[] status = new boolean[]{false,true};
	    downPanel.add(element.createCheckBox(inhalt,status), constr);
	    
	    //Leeres JLabel erstellen
        constr.gridx = 0;
        constr.gridy = 2;
        constr.anchor = GridBagConstraints.WEST;
        downPanel.add(element.createEmptyJLabel(30), constr);
        
	    //Leeres JLabel erstellen
        constr.gridx = 0;
        constr.gridy = 3;
        constr.anchor = GridBagConstraints.WEST;
        downPanel.add(element.createEmptyJLabel(30), constr);
        
	    //Leeres JLabel erstellen
        constr.gridx = 0;
        constr.gridy = 4;
        constr.anchor = GridBagConstraints.WEST;        
        downPanel.add(element.createEmptyJLabel(30), constr);        
    
	    
	    // fertige topPanel und downPanel auf cpane legen
	    cpane.add(topPanel, BorderLayout.NORTH);
        cpane.add(downPanel, BorderLayout.SOUTH); 
	}
	class EventHandling implements ActionListener{
		public void actionPerformed(ActionEvent event){			
			if(event.getActionCommand().equals("OK")){
				String contentEmailField = emailField.getText();
				String contentNameField = nameField.getText();
				System.out.println("Name: " + contentNameField +
									"\nEmail: " + contentEmailField);
			}
			else if(event.getActionCommand().equals("Öffnen")){
				fileDialogOpen();
			}
			else if(event.getActionCommand().equals("Speichern")){
				fileDialogSave();				
			}
			else if(event.getActionCommand().equals("Beenden")){
				System.exit(0);				
			}
			else if(event.getActionCommand().equals("Windows")){
				System.out.println("Windows");
				updateLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
			}
			else if(event.getActionCommand().equals("Metal")){
				System.out.println("Metal");
				updateLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");				
			}
			else if(event.getActionCommand().equals("Motif")){
				System.out.println("Motif");
				updateLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");	
			}
			else if(event.getActionCommand().equals("Autor")){
				optionPane("Autor");
			}
			else if(event.getActionCommand().equals("Help")){
				optionPane("Help");				
			}
		}	
	}
	
	public void fileDialogOpen(){
		FileDialog dialogOpen = new FileDialog(this, "Datei laden...",FileDialog.LOAD);
		dialogOpen.show();
		dateiPfad = dialogOpen.getDirectory();
		dateiPfad += dialogOpen.getFile();
		if(dateiPfad == null){
			return;
		}
		else{
			textAreaContent = Datei.leseDaten(dateiPfad);
			System.out.println(textAreaContent);
		}
	}
	
	public void fileDialogSave(){
		String inhalt = textArea.getText();
		FileDialog dialogSave = new FileDialog(this, "Datei speichern...",FileDialog.SAVE);
		dialogSave.show();
		dateiPfad = dialogSave.getDirectory();
		dateiPfad += dialogSave.getFile();
		if(dateiPfad == null){
			return;
		}
		System.out.println(inhalt);
		Datei.schreibeDaten(dateiPfad, inhalt);
	}	
	
	public void optionPane(String type){
		if(type.equals("Autor")){
			JOptionPane.showMessageDialog(this, "Autor: Tobias Fickinger\n\nErstellt am: 28.04.2007\n\nVersion: 0.1","Information",JOptionPane.INFORMATION_MESSAGE);			
		}
		else if(type.equals("Help")){
			JOptionPane.showMessageDialog(this, "1. Menüführung\n" + 
											"1.1 Datei\n" +
											"\t1.1.1 Öffnen: Klicken Sie hier, um eine Datei zu öffnen\n" +
											"\t1.1.2 Speichern: Klicken Sie hier, um eine Datei zu speichern\n" +
											"\t1.1.3 Beenden: Klicken Sie hier, um das Programm zu beenden\n" +
											"\t1.2 look&feel\n" +
											"\t1.2.1 Windows: Windows-Ansicht\n" +
											"\t1.2.2 Metal: Metal-Ansicht\n" + 
											"\t1.2.3 Motif: Motif-Ansicht\n" +
											"\t1.3 Info\n" + 
											"\t1.3.1 Autor: Informationen zum Programm anzeigen\n" + 
											"\t1.3.2 Help: Hilfemenu anzeigen\n","Hilfemenü",JOptionPane.INFORMATION_MESSAGE);
		}
		
	}
	
	public void updateLookAndFeel(String laf){
		try{
			UIManager.setLookAndFeel(laf);
			SwingUtilities.updateComponentTreeUI(this);
		}
		catch(Exception xcpt){
			System.out.println("Fehler beim Ändern des Look and Feel: " + xcpt.getLocalizedMessage());
		}
		this.pack();
	}
	
}//Ende der Klasse ReservierungsFenster
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Neumi5694 LookAndFeel Look & Feel nicht angezeigter Komponenten ändern AWT, Swing, JavaFX & SWT 6
B Look And Feel ändern (Netbeans) AWT, Swing, JavaFX & SWT 18
aze JXTaskPane Look and Feel ändern AWT, Swing, JavaFX & SWT 2
A JProgressBar: Farbe im Windows Look&Feel ändern. AWT, Swing, JavaFX & SWT 1
padde479 Look And Feel zur Laufzeit ändern AWT, Swing, JavaFX & SWT 2
L Wie look & feel ändern? AWT, Swing, JavaFX & SWT 2
F Look and Feel zur Laufzeit ändern macht Probleme AWT, Swing, JavaFX & SWT 3
Hatsi09 Look and Feel AWT, Swing, JavaFX & SWT 6
MaxG. Swing Java Look and Feel AWT, Swing, JavaFX & SWT 2
M JFileChooser Look and Feel AWT, Swing, JavaFX & SWT 2
M JTabbedPane verändern mit Nimbus Look and Feel AWT, Swing, JavaFX & SWT 1
A Swing JProgressbar im Windows Look & Feel Farbanpassung AWT, Swing, JavaFX & SWT 2
G LookAndFeel Tutorial für Erstellung eines eigenen Look And Feel AWT, Swing, JavaFX & SWT 3
javampir Look&Feel von JMenuItem AWT, Swing, JavaFX & SWT 3
V Nimbus Look and Feel register Region problem AWT, Swing, JavaFX & SWT 5
J Eigenes Gui/ Look and Feel AWT, Swing, JavaFX & SWT 14
S Look und Feel ändert sich nicht AWT, Swing, JavaFX & SWT 4
B Eigenen Look&Feel erstellen?! AWT, Swing, JavaFX & SWT 2
V Nimbus Look And Feel Button textForeground AWT, Swing, JavaFX & SWT 8
T Applet JTattoo Look and Feel AWT, Swing, JavaFX & SWT 5
C Swing JTattoo - Look and Feel für ALLE User AWT, Swing, JavaFX & SWT 5
N Nimbus Look & Feel AWT, Swing, JavaFX & SWT 4
B Windows Look and Feel AWT, Swing, JavaFX & SWT 2
eLogic Look And Feel - Einstellen AWT, Swing, JavaFX & SWT 3
V Swing Nimbus Look And Feel verschiedene Buttons AWT, Swing, JavaFX & SWT 8
B LookAndFeel Cell Renderer für JTable bei Nimbus Look and Feel AWT, Swing, JavaFX & SWT 2
K LookAndFeel Look And Feel ändert sich nicht AWT, Swing, JavaFX & SWT 8
Dragonfire Swing UTF-8 BOB Probleme mit Windows Look and Feel AWT, Swing, JavaFX & SWT 4
I LookAndFeel Wie kann ich das Look and Feel "Blue Vista" verwenden? AWT, Swing, JavaFX & SWT 4
trash Look and Feel Probleme AWT, Swing, JavaFX & SWT 10
Developer_X LookAndFeel Eigenes Look And Feel erstellen AWT, Swing, JavaFX & SWT 33
J Auf die im Look and Feel eingestellten Farben zugreifen AWT, Swing, JavaFX & SWT 2
T LookAndFeel Look and Feel Frage AWT, Swing, JavaFX & SWT 2
W Look and Feel für einzelnde JFrames AWT, Swing, JavaFX & SWT 4
S Swing: Look and Feel abändern oder für Teilkomponenten anderes LaF setzen AWT, Swing, JavaFX & SWT 2
B Look and Feel Designer für GUI AWT, Swing, JavaFX & SWT 2
S LookAndFeel Look and Feel mit Windows funktioniert nicht AWT, Swing, JavaFX & SWT 8
E Look & Feel - Nimbus AWT, Swing, JavaFX & SWT 12
M JProgressBar Look and Feel AWT, Swing, JavaFX & SWT 5
K Look&Feel von JMenuBar und Subkomponenten anpassen AWT, Swing, JavaFX & SWT 6
data89 Nimbus Look and Feel als gepackte JAR-Datei AWT, Swing, JavaFX & SWT 3
G Look And Feel in Eclipse AWT, Swing, JavaFX & SWT 2
J Java Look And Feel- Welche gefallen euch am besten? AWT, Swing, JavaFX & SWT 12
T Look & Feel Skins/Themes AWT, Swing, JavaFX & SWT 9
R JScrollBar mit eigenem look and feel AWT, Swing, JavaFX & SWT 6
M Problem Nimbus Look&Feel AWT, Swing, JavaFX & SWT 2
P JTable: nicht im gewünschten Look&Feel AWT, Swing, JavaFX & SWT 3
C JTextArea und Look&Feel AWT, Swing, JavaFX & SWT 14
G windows look and feel problem AWT, Swing, JavaFX & SWT 7
M JTable Zeilenhöhe Look and Feel AWT, Swing, JavaFX & SWT 2
H Look & Feel und JSplitPane Problem AWT, Swing, JavaFX & SWT 17
A Was ist Look and Feel und wie wirds bearbeitet AWT, Swing, JavaFX & SWT 7
G bestes Look & Feel ? AWT, Swing, JavaFX & SWT 15
G Look&Feel AWT, Swing, JavaFX & SWT 5
V Swing: System-Look&Feel unter KDE AWT, Swing, JavaFX & SWT 3
F Externes Look & Feel für Swing wie importieren/verwenden AWT, Swing, JavaFX & SWT 3
J Lookand Feel JGoodies <-> MetalLookAndFeel AWT, Swing, JavaFX & SWT 2
P Swing mit substance look/feel fenster repaint AWT, Swing, JavaFX & SWT 7
S Unterschiedliche Optik trotz gleicher Look and Feel Code? AWT, Swing, JavaFX & SWT 11
S Oyoaha Look and Feel AWT, Swing, JavaFX & SWT 4
S LOOK and FEEL fü MAC AWT, Swing, JavaFX & SWT 11
X Metal Look and Feel in schwarz AWT, Swing, JavaFX & SWT 3
B Allgemeine Frage zu Look&Feel AWT, Swing, JavaFX & SWT 2
Bernasconi Look and Feel Problem AWT, Swing, JavaFX & SWT 6
M Look&Feel, JButton ,Opaque AWT, Swing, JavaFX & SWT 2
oliver1974 Nimbus Look & Feel und die Ausgaben nach Standardaus. AWT, Swing, JavaFX & SWT 4
F JInternalFrame Look and Feel AWT, Swing, JavaFX & SWT 3
N JFileChooser mit WindowsLook&Feel AWT, Swing, JavaFX & SWT 6
O Look And Feel greift nicht im Hauptfenster (JFrame)! AWT, Swing, JavaFX & SWT 11
D Aerith Look & Feel AWT, Swing, JavaFX & SWT 3
G Fonts bei Look And Feel AWT, Swing, JavaFX & SWT 3
G JTable wird im Windows Look&Feel nicht gedruckt AWT, Swing, JavaFX & SWT 5
V System Look and Feel, FileChooser, Optionen einer jar-Datei AWT, Swing, JavaFX & SWT 10
V Lock & Feel für Error-Messages AWT, Swing, JavaFX & SWT 6
W Anderes Look And Feel AWT, Swing, JavaFX & SWT 9
Hotkey Freie Icons für Anwendung mit Java Look&Feel AWT, Swing, JavaFX & SWT 4
H Look&Feel - Mnemonics - java5 AWT, Swing, JavaFX & SWT 2
G Java 1.5 Look&Feel zur Laufzeit auf 1.4 umstellen möglic AWT, Swing, JavaFX & SWT 2
M Look&Feel - Layout - GUI - Design - SAP LnF :) AWT, Swing, JavaFX & SWT 12
G Fragen zum Ocean Look and Feel AWT, Swing, JavaFX & SWT 3
B Look & Feel AWT, Swing, JavaFX & SWT 5
S Anderes Look'n'Feel = JTextArea doppelt so gross! AWT, Swing, JavaFX & SWT 13
javasdann JTable Kopfzeile in Windows Look&Feel unschön. AWT, Swing, JavaFX & SWT 3
M Look and Feel Standard AWT, Swing, JavaFX & SWT 5
G Look&Feel geht nicht AWT, Swing, JavaFX & SWT 3
U Billiges Look And Feel AWT, Swing, JavaFX & SWT 12
L-ectron-X Kann man dieses Look & Feel einbinden? AWT, Swing, JavaFX & SWT 7
P Eigenes Look&Feel schreiben (Tutorials?) AWT, Swing, JavaFX & SWT 6
G Look&Feel wird nur teilweise angezeigt! AWT, Swing, JavaFX & SWT 9
M Frage zum Look and Feel AWT, Swing, JavaFX & SWT 4
R JScrollpane mit Look'n'Feel AWT, Swing, JavaFX & SWT 6
A Look and Feel einer Anwendung verändern AWT, Swing, JavaFX & SWT 7
M Look And Feel nur für eine Komponente? AWT, Swing, JavaFX & SWT 2
Z Look&Feel-Wechsel bringt mein GUI durcheinander AWT, Swing, JavaFX & SWT 5
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
H AWT Dialog Größe ändern - Schwarzer Inhalt beim groß ziehen AWT, Swing, JavaFX & SWT 1
_user_q ChoiceBox Elemente: Sprache ändern AWT, Swing, JavaFX & SWT 7
raeuchertofu Text von JTextfield und JLabel ändern AWT, Swing, JavaFX & SWT 2
B Deckraft ändern AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben