Как мне установить внешний вид и внешний вид в Java Swing с помощью UIManager и Classloader? - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь добавить систему плагинов, где люди могут устанавливать свои собственные стили.Я не уверен, как на самом деле установить его, чтобы его можно было найти, пройдя через UIManager.getInstalledLookAndFeels ()?

Я пробовал это:

public static void registerPlugins()
{
    File[] files = pluginDir.listFiles();
    for(int i = 0; i < files.length; i++)
    {
        if(files[i].getName().endsWith(".config"))
        {
            System.out.println("Found plugin");
            File jarfile = new File(pluginDir,files[i].getName().substring(0,files[i].getName().length()-7)+".jar");
            if(jarfile.exists())
            {
                System.out.println("Found jar");
                BufferedReader reader = null;
                try {
                    reader = new BufferedReader(new FileReader(files[i]));
                    String name = reader.readLine(); //Unused for now
                    String classname = reader.readLine();
                    reader.close();
                    reader = null;
                    URL url = jarfile.toURI().toURL();  
                    URL[] urls = new URL[]{url};

                    ClassLoader cl = new URLClassLoader(urls);

                    Class<?> lafClass = cl.loadClass(classname);
                    final LookAndFeel laf =  (LookAndFeel)lafClass.newInstance();

                    UIManager.getLookAndFeelDefaults().put("ClassLoader", cl);
                    UIManager.installLookAndFeel(laf.getName(), laf.getClass().getName());                  
                } catch (Exception e) {
                    try {
                        if(reader != null)
                        reader.close();
                    } catch (Exception es) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    e.printStackTrace();
                }

            }
        }
    }
}

Это получаетКонфигурационные файлы из папки плагинов с содержимым, таким как Web, выглядят и чувствуют com.alee.laf.WebLookAndFeel и загружают соответствующий jar.До сих пор все, что он делал, это сбой, потому что он не мог загрузить компоненты или перечислить внешний вид, но также не мог найти его, так что, как и в списке, ПОКАЗЫВАЕТ "WebLookAndFeel", но пытается использовать com.alee.laf.WebLookAndFeel, причиныисключение.

Любой совет?

...