Nun habe ich folgenden Code im Konstruktor, weiss jedoch nicht, ob das
am Anfang oder am Schluss des Konstruktors (vor setVisible(true))
einbauen soll:
// Kunststoff Look-and-Feel setzen
URLClassLoader loader = null;
Class cplaf = null;
LookAndFeel plaf = null;
try {
loader = new URLClassLoader(new URL[] {new
File("./ext/kunststoff.jar").toURL()});
cplaf =
loader.loadClass("com.incors.plaf.kunststoff.KunststoffLookAndFeel");
plaf = (LookAndFeel)cplaf.newInstance();
}
catch (Exception e) {
// Hier würde ich eigentlich gerne das Metal LookAndFeel
// nehmen, weiss jedoch noch nicht genau wie...
System.exit(1);
}
try {
UIManager.setLookAndFeel(plaf);
SwingUtilities.updateComponentTreeUI(this);
}
catch (Exception e) {
e.printStackTrace();
System.exit(0);
}
Wenn ich das jedoch so mache, bekomme ich ein paar Exceptions:
UIDefaults.getUI() failed: no ComponentUI class for:
javax.swing.JMenuBar[,0,0,0x0,invalid,layout=javax.swing.plaf.basic.DefaultMenuLayout,alignmentX=null,alignmentY=null,border=javax.swing.plaf.metal.MetalBorders$MenuBarBorder@288051,flags=392,maximumSize=,minimumSize=,preferredSize=,margin=,paintBorder=true]
java.lang.Error
at javax.swing.UIDefaults.getUIError(UIDefaults.java:686)
at javax.swing.UIDefaults.getUI(UIDefaults.java:716)
at javax.swing.UIManager.getUI(UIManager.java:784)
at javax.swing.JMenuBar.updateUI(JMenuBar.java:125)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1090)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI(SwingUtilities.java:1082)
at spanisch.VokabelTrainer.<init>(VokabelTrainer.java:114)
at spanisch.VokabelTrainer.main(VokabelTrainer.java:934)
UIDefaults.getUI() failed: no ComponentUI class for:
javax.swing.JMenu[,0,0,0x0,invalid,alignmentX=null,alignmentY=null,border=javax.swing.plaf.metal.MetalBorders$MenuItemBorder@e1a408,flags=264,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=2,bottom=2,right=2],paintBorder=true,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Datei]
java.lang.Error
at javax.swing.UIDefaults.getUIError(UIDefaults.java:686)
at javax.swing.UIDefaults.getUI(UIDefaults.java:716)
at javax.swing.UIManager.getUI(UIManager.java:784)
at javax.swing.JMenu.updateUI(JMenu.java:192)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1090)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI(SwingUtilities.java:1082)
at spanisch.VokabelTrainer.<init>(VokabelTrainer.java:114)
at spanisch.VokabelTrainer.main(VokabelTrainer.java:934)
UIDefaults.getUI() failed: no ComponentUI class for:
javax.swing.JMenu[,0,0,0x0,invalid,alignmentX=null,alignmentY=null,border=javax.swing.plaf.metal.MetalBorders$MenuItemBorder@e1a408,flags=264,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=2,bottom=2,right=2],paintBorder=true,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Trainers]
java.lang.Error
at javax.swing.UIDefaults.getUIError(UIDefaults.java:686)
at javax.swing.UIDefaults.getUI(UIDefaults.java:716)
at javax.swing.UIManager.getUI(UIManager.java:784)
at javax.swing.JMenu.updateUI(JMenu.java:192)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1090)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI(SwingUtilities.java:1082)
at spanisch.VokabelTrainer.<init>(VokabelTrainer.java:114)
at spanisch.VokabelTrainer.main(VokabelTrainer.java:934)
UIDefaults.getUI() failed: no ComponentUI class for:
javax.swing.JMenu[,0,0,0x0,invalid,alignmentX=null,alignmentY=null,border=javax.swing.plaf.metal.MetalBorders$MenuItemBorder@e1a408,flags=264,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=2,bottom=2,right=2],paintBorder=true,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Optionen]
java.lang.Error
at javax.swing.UIDefaults.getUIError(UIDefaults.java:686)
at javax.swing.UIDefaults.getUI(UIDefaults.java:716)
at javax.swing.UIManager.getUI(UIManager.java:784)
at javax.swing.JMenu.updateUI(JMenu.java:192)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1090)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI(SwingUtilities.java:1082)
at spanisch.VokabelTrainer.<init>(VokabelTrainer.java:114)
at spanisch.VokabelTrainer.main(VokabelTrainer.java:934)
UIDefaults.getUI() failed: no ComponentUI class for:
javax.swing.JMenu[,0,0,0x0,invalid,alignmentX=null,alignmentY=null,border=javax.swing.plaf.metal.MetalBorders$MenuItemBorder@e1a408,flags=264,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=2,bottom=2,right=2],paintBorder=true,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Hilfe]
java.lang.Error
at javax.swing.UIDefaults.getUIError(UIDefaults.java:686)
at javax.swing.UIDefaults.getUI(UIDefaults.java:716)
at javax.swing.UIManager.getUI(UIManager.java:784)
at javax.swing.JMenu.updateUI(JMenu.java:192)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1090)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI0(SwingUtilities.java:1101)
at
javax.swing.SwingUtilities.updateComponentTreeUI(SwingUtilities.java:1082)
at spanisch.VokabelTrainer.<init>(VokabelTrainer.java:114)
at spanisch.VokabelTrainer.main(VokabelTrainer.java:934)
Das funktioniert alles, wenn ich in Eclips mittels "Add External JAR"
das kunststoff.jar einbaue, aber das möchte ich nicht.
Vielen Dank im voraus für alle Tipps.
Gruss, Hausi
[...]
>
> Das funktioniert alles, wenn ich in Eclips mittels "Add External JAR"
> das kunststoff.jar einbaue, aber das möchte ich nicht.
>
> Vielen Dank im voraus für alle Tipps.
>
> Gruss, Hausi
>
ich habe gerade auch eine projekt mit div. L&F. Die entsprechenden
Jar-Dateien sind in meinem CLASSPATH und umgeschaltet wird per :
[...]
String metal = "javax.swing.plaf.metal.MetalLookAndFeel";
String kunstoff = "com.incors.plaf.kunststoff.KunststoffLookAndFeel";
[...]
UIManager.setLookAndFeel(kunstoff);
SwingUtilities.updateComponentTreeUI(sm.getFrame());
gruss
stefan
ups, kommt vom kopieren .. soll heissen :
SwingUtilities.updateComponentTreeUI(myFrame);
>
> gruss
>
> stefan
>
Eigentlich ist mein CLASSPATH in Ordnung. Eigentlich scheint mir alles
in Ordnung zu sein, dennoch schaff ich es nicht, die Applikation mit dem
Kunststoff L&F zu starten. Und all diese Exceptions, die ich erhalte
helfen mir irgendwie nicht weiter. (Vielleicht bin ich aber einfach noch
zu schwach heute...)
:-(
Christian Hauser wrote:
> Eigentlich ist mein CLASSPATH in Ordnung. Eigentlich scheint mir alles
> in Ordnung zu sein, dennoch schaff ich es nicht, die Applikation mit dem
> Kunststoff L&F zu starten. Und all diese Exceptions, die ich erhalte
> helfen mir irgendwie nicht weiter. (Vielleicht bin ich aber einfach noch
> zu schwach heute...)
>
> :-(
Ich habe das JAR im jre/lib/ext-Verzeichnis(keinen Classpath gesetzt),
und es funktioniert dann problemlos mit dem ueblichen setLookAndFeel()
vom UIManager, sobald ich eines setze, mein default L&F habe ich in
einer swing.properties - Datei gesetzt. Hier habe ich noch ein paar
Notizen zum Kunststoff-L&F setzen: http://www.jalice.net/lafsite.htm
Vielleicht nuetzt dir das ja noch etwas.
Linda
--
(=)
/ li...@jalice.ch - http://www.jalice.net
(=)
/ l.ra...@hswzfh.ch - http://www.hswzfh.ch
(=)
Ohne jetzt genau zu wissen, wovon ich schreibe, sieht das da oben
für mich so aus als würde Deine Applikation mit einem anderen
ClassLoader arbeiten.
Du kannst dem PLaF mit folgender Zeile nachträglich sagen, welcher
ClassLoader verwendet werden soll:
UIManager.getLookAndFeelDefaults().put( "ClassLoader",
this.getClass().getClassLoader() );
...wobei "this" irgendein Objekt in Deinem momentanen ClassLoader
Kontext sein kann.
Die obige Zeile ist übrigens ein Muss für Java Webstart und auch
eine typische Swing FAQ.
Man braucht die Zeile für Java Webstart auch dann, wenn man den
einfachsten Weg geht, um Kunsstoff zu Beginn des Programmes zu
laden:
try {
UIManager.setLookAndFeel(new KunststoffLookAndFeel());
}
catch (UnsupportedLookAndFeelException e) {
System.out.println("Danke für Kunststoff, Jan. Schick nochmal ne Palette bitte.");
}
Viele Grüsse,
Carl
> Ich habe das JAR im jre/lib/ext-Verzeichnis(keinen Classpath gesetzt),
> und es funktioniert dann problemlos mit dem ueblichen setLookAndFeel()
> vom UIManager, sobald ich eines setze, mein default L&F habe ich in
> einer swing.properties - Datei gesetzt. Hier habe ich noch ein paar
> Notizen zum Kunststoff-L&F setzen: http://www.jalice.net/lafsite.htm
>
> Vielleicht nuetzt dir das ja noch etwas.
>
> Linda
Ich möchte mein Programm auch anderen (nicht Informatikern, die mit mir
Spanisch nehmen) zur Verfügung stellen. Und da wäre ich froh, wenn ich
das L&F in einem Unterverzeichnis gleich mitliefern kann.
Aber jetzt funktioniert alles (Ich hatte keine Probleme, wenn ich es von
Hand kompilierte und ausführte, sondern nur innerhalb Eclipse).
Gruss, Hausi
PS: Informative Homepage! Weiter so! ;-)
Hallo Carl
Vielen Dank für den Tipp. Jetzt läuft es (fürs erste).
Gruss, Hausi (mit WebStart noch wenig am Hut habend...)