Hallo, ich lass mich auch mal wieder sehen ^^
Ich hab da ein Java Programm, in dem ich dem Benutzer ermögliche, zur Laufzeit den L&F zu verändern. Wenn ich das aber tue, verschwindet beim Nativen und beim Motif L&F plötzlich der Rahmen und die Titelleiste des Programms. -.-
Wie kann ich das verhindern?
Anmerkung: Der komplette Quellcode und das Programm kann, wenn nötig, unter http://193.22.164.98/real/reader/ gedownloadet werden. Der Quellcode ist etwas umfangreich, auch weil ich noch nicht so gut bin. Ich werd ihn irgendwann am Ende nochmal optimieren.
Code:
// Schritt 3: Das Interface mit Reaktionen verknüpfen
/** <p> Die Funktion actionPerformed(ActionEvent):void verknüpft die Benutzereingaben
* mit bestimmten Reaktionen des Programms. </p>
*/
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("MNQuit")) {
cQuitApp();
}
else if (e.getActionCommand().equals("MNInfo")) {
cInfo();
}
else if (e.getActionCommand().equals("MNLFJava")) {
cLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
}
else if (e.getActionCommand().equals("MNLFMetal")) {
cLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
}
else if (e.getActionCommand().equals("MNLFMotif")) {
cLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
}
else if (e.getActionCommand().equals("MNLFNative")) {
cLookAndFeel("Native");
}
else if (e.getActionCommand().equals("MNOpen")) {
cOpen();
}
}
// Schritt 4: Die Reaktionen
/* Die c-Methoden sind verantwortlich für die Reaktionen des Programms auf
* bestimmte Benutzeraktivitäten und ~eingaben.
*/
/** <p> cLookAndFeel ermöglicht dem Benutzer, das LookAndFeel der Anwendung
* zur Laufzeit auszuwählen. </p>
*/
private void cLookAndFeel(String LookAndFeel) {
if (LookAndFeel.equals("Native")) {
JFrame.setDefaultLookAndFeelDecorated(false);
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
SwingUtilities.updateComponentTreeUI(thereader);
thereader.pack();
thereader.setSize(640, 480);
Dimension d = thereader.getToolkit().getDefaultToolkit().getScreenSize();
thereader.setLocation(d.width / 2 - 320, d.height / 2 - 240);
thereader.setVisible(true);
}
catch(Exception e) {};
}
else {
try {
JFrame.setDefaultLookAndFeelDecorated(false);
UIManager.setLookAndFeel(LookAndFeel);
SwingUtilities.updateComponentTreeUI(thereader);
thereader.pack();
thereader.setSize(640, 480);
Dimension d = thereader.getToolkit().getDefaultToolkit().getScreenSize();
thereader.setLocation(d.width / 2 - 320, d.height / 2 - 240);
thereader.setVisible(true);
}
catch(Exception e) {};
}
}