Avatar billede stigc Nybegynder
27. februar 2005 - 21:29 Der er 7 kommentarer og
2 løsninger

Set LookAndFeel dynamisk

Jeg ønsker at sætte LookAndFeel dynamisk, sådan at jeg vil kunne angive en JAR-fil, som indeholder den LookAndFeel klasse der skal loades (evt. også klassens navn). JAR-filen må ikke stå i class-path! Har i noget kode til det?
Avatar billede arne_v Ekspert
27. februar 2005 - 21:31 #1
Så skal du lave en classloader til den jar fil og loade klassen med den.
Avatar billede arne_v Ekspert
27. februar 2005 - 21:34 #2
URL[] url = new URL[1];
url[0] = new URL("file:etdir/etnavn.jar");
URLClassLoader cl = new URLClassLoader(url);
EtInterface o = (EtInterface)Class.forName("EnKlasse", true, cl).newInstance();
Avatar billede stigc Nybegynder
27. februar 2005 - 21:39 #3
Sådan prøver jeg også:

URL url = new File("C:\\quaqua.jar").toURL();
URLClassLoader classLoader = new URLClassLoader(new URL[] { url } );
Class c = classLoader.loadClass("ch.randelshofer.quaqua.Quaqua14JaguarLookAndFeel");

LookAndFeel lnf  = (LookAndFeel)c.newInstance();
UIManager.getDefaults().put("ClassLoader",lnf.getClass().getClassLoader());
UIManager.setLookAndFeel(lnf);

Men får følgende


Exception in thread "main" java.lang.InternalError: Unable to instanciate AquaLookAndFeel:apple.laf.
AquaLookAndFeel
        at ch.randelshofer.quaqua.Quaqua14JaguarLookAndFeel.<init>(Quaqua14JaguarLookAndFeel.java:16
7)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at java.lang.Class.newInstance0(Unknown Source)
        at java.lang.Class.newInstance(Unknown Source)
        at dk.stigc.JavaTunes.JavaTunes.main(JavaTunes.java:133)

Jeg loader jo kun en klasse, men UIManager har vel brug for flere.


http://www.randelshofer.ch/quaqua/download.html
Avatar billede arne_v Ekspert
27. februar 2005 - 21:48 #4
Put en URL / jar fil mere i input til din classloader.

Den som indeholder:
  AquaLookAndFeel:apple.laf.AquaLookAndFeel.class
Avatar billede stigc Nybegynder
27. februar 2005 - 22:07 #5
Den ligger allerede i C:\quaqua.jar
Avatar billede stigc Nybegynder
28. februar 2005 - 21:44 #6
Fandt ud af at apple.laf.AquaLookAndFeel.class kun findes i JRE på MAC.
Avatar billede stigc Nybegynder
08. marts 2005 - 19:22 #7
Læg et svar, hvis du ønsker point....
Avatar billede arne_v Ekspert
10. april 2005 - 18:21 #8
ok

(selvom jeg ikke synes at jeg har bidraget med meget)
Avatar billede stigc Nybegynder
10. april 2005 - 19:59 #9
vi deler.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester