Conflito entre o Substance (Look and Feel) e o AppFramework (Swing)

Pessoal, desculpas por criar mais um tópico a respeito disso, mas eu queria separar dúvidas de hipótestes.

Bem, a minha hipótese é a seguinte: o erro não está no Substance. Pra mim, está na AppFramework, ou pelo menos no modo como ele seta o look and feel da aplicação. Baixei o código fonte, e vi o seguinte método:


    static <T extends Application> T create(Class<T> applicationClass) throws Exception {

        ...

        /* Load the application resource map, notably the 
         * Application.* properties.
         */
        ResourceMap appResourceMap = ctx.getResourceMap();

        appResourceMap.putResource("platform", platform());

        if (!Beans.isDesignTime()) {
            /* Initialize the UIManager lookAndFeel property with the
             * Application.lookAndFeel resource.  If the the resource
             * isn't defined we default to "system".
             */
            String key = "Application.lookAndFeel";
            String lnfResource = appResourceMap.getString(key);
            String lnf = (lnfResource == null) ? "system" : lnfResource;
            try {
                if (lnf.equalsIgnoreCase("system")) {
                    String name = UIManager.getSystemLookAndFeelClassName();
                    UIManager.setLookAndFeel(name);
                }
                else if (!lnf.equalsIgnoreCase("default")) {
                    UIManager.setLookAndFeel(lnf);
                }
            }
            catch(Exception e) {
                String s = "Couldn't set LookandFeel " + key + " = \"" + lnfResource + "\"";
                logger.log(Level.WARNING, s, e);
            }
        }

        return application;
    }

Notem a linha 26 (sem trocadilhos) desse trecho de código. Isso não deveria ser feito utilizando o invokeLater do SwingUtilities?

 SwingUtilities.invokeLater(...)

Mas que erro está acontecendo?

O que está acontecendo é o erro que eu já vi em váaaarios posts (por isso pedi desculpas por ter criado mais um):

org.jvnet.substance.api.UiThreadingViolationException: Component creation must be done on Event Dispatch Thread  
    at org.jvnet.substance.utils.SubstanceCoreUtilities.testComponentCreationThreadingViolation(SubstanceCoreUtilities.java:2312)  
    at org.jvnet.substance.SubstanceMenuUI.createUI(SubstanceMenuUI.java:90) 

Havia tentado de tudo, até que resolvi abrir o codigo da AppFramework e achar o que postei no inicio do topico :smiley:

Já tentou iniciar a aplicação como nesse link?
http://weblogs.java.net/blog/alexfromsun/archive/2005/11/debugging_swing_1.html

Olha o que o artigo da wikipedia fala aqui:
http://en.wikipedia.org/wiki/Event_dispatching_thread#Swing_and_thread_safety

Pelo que eu pude ver, a AppFramework faz isso. Abri o código fonte da classe Application e vi que o código da mudança de look and feel é chamado dentro de um Runnable(), e o runnable é passado como parametro pra um SwingUtilities.invokeLater()…

Olha, nunca consegui fazer o substance funcionar com uma determinada aplicação aqui. São muitos bugs. Existem determinados códigos que influenciam diretamente na api do substance.