FLAMINGO - Ribbons

Hola a todos, esta vez me encuentro pidiendo un poco de ayuda!

Bien el punto está en que aquí me encontré un post con el tema de este proyecto llamado Flamingo, que consiste en una librería la cuál provee las clases necesarias para crear una aplicación con Ribbons en Java, decidí hacer una pequeña prueba de esta librería, me leí el archivo de presentación de la librería, el blog del creador de este proyecto y la API del proyecto para comenzar con la prueba. Lo que les comento es que la poca información que encontré acerca del proyecto, me pareció suficiente como para entender el mecanismo y comencé; los pasos son muy fáciles una vez que entiendes como está estructurado un Ribbon con esta librería. Para iniciar se debe crear una Frame de tipo JRibbonFrame, este tipo Frame ya contiene un Ribbon integrado y mediante el método getRibbon(). se obtiene este componente. Ahora, la estructura que llevan un Ribbon es de la siguiente forma:

JRibbon contiene a -> RibbonTask contiene a -> JRibbonBand contiene a -> JComponent

Como vemos el componente Ribbon es el contenedor central, el cual puede tener diferentes pestañas que son los RibbonTask y las pestañas pueden tender diferentes Bandas que son las JRibbonBand a su vez las Bandas están compuestas por JComponent los cuales definen una Banda y las Bandas definen una pestaña, esto es, que todo el conjunto desde los componentes hasta la pestaña definen un conjunto de componentes relacionados entre sí y que a su vez se agrupan en diferentes conjuntos, ejemplo:

Ribbon de la aplicación

Pestaña= Diseño de Página
Banda= Portapapeles
Componentes= Botón Pegar... Botón Cortar... Botón Copiar
Banda= Estilos
Componentes= Botón Estilo Azul... Botón Estilo Verde... Botón Estilo Negritas
Pestaña= Herramientas
.... y así con más pestañas!

Bien, basta de explicaciones, el chiste es que codifiqué mi pequeñísima aplicación y funcionó una vez, me puso el Ribbon con los botones, las bandas las pestañas y hasta le añadí un RibbonApplicationMenu que no es más que el menú central (basándonos en una aplicación de windows el menú que trae el logo de windows en un botón circular), todo esto muy básico pero lo hacía, utilicé un Layout de tipo BorderLayout, bien ahora lo quise pasar a mi aplicación, volví a crear de nuevo el JRibbonFrame en un nuevo proyecto y empecé a agregar pestañas y demás y que creen, que ya no jaló, me manda una Excepción muy rara que hasta ahorita no he podido solucionar, entiendo lo que me dice el Stack Trace pero como esta es una librería un tanto desconocida no he podido definir que es lo que falla, he estado intentando diferentes formas para crear los componentes y los diferentes Layouts del Frame pero nada. Aquí les dejo el código y el Stack Trace para que lo chequen y si saben algo me lo puedan comunicar y explicar jeje :)

Código:

public class JFlamingow extends JRibbonFrame {

    /** Variables globales */
    JRibbon ribbon;
    JCommandButton boton;
    JRibbonBand banda;
    RibbonTask task;
    EmptyResizableIcon icono;
    RibbonApplicationMenu menu;

    public JFlamingow() {
        initComponents();
       
        icono = new EmptyResizableIcon (new Dimension(5,5));// Creo un icono vacío
        menu = new RibbonApplicationMenu();//Creo el menu principal
        this.getRibbon().setApplicationMenu(menu);// añado el menu principal al Ribbon de la aplicacion

        boton = new JCommandButton("Pegar", icono);//Creo un botón
        banda = new JRibbonBand("Herramientas", icono);//Creo la Banda llamada Herramientas
        banda.addCommandButton(boton, RibbonElementPriority.TOP);//Agrego el botón a la Banda de Herramientas

        task = new RibbonTask("Inicio",banda);// Creo la pestaña con la banda que ya he creado antes

        this.getRibbon().addTask(task);//Agrego la pestaña al Ribbon
        this.getRibbon().setVisible(true);
    }

Stack Trace:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Inconsistent preferred widths
Ribbon band 'Tools has the following resize policies
        org.jvnet.flamingo.ribbon.resize.CoreRibbonResizePolicies$None with preferred width 50
        org.jvnet.flamingo.ribbon.resize.CoreRibbonResizePolicies$Low2Mid with preferred width 50
        org.jvnet.flamingo.ribbon.resize.CoreRibbonResizePolicies$Mid2Mid with preferred width 50
        org.jvnet.flamingo.ribbon.resize.CoreRibbonResizePolicies$Mirror with preferred width 50
        org.jvnet.flamingo.ribbon.resize.CoreRibbonResizePolicies$Mid2Low with preferred width 50
        org.jvnet.flamingo.ribbon.resize.CoreRibbonResizePolicies$High2Mid with preferred width 70
        org.jvnet.flamingo.ribbon.resize.IconRibbonBandResizePolicy with preferred width 46
org.jvnet.flamingo.ribbon.resize.CoreRibbonResizePolicies$Mid2Low with pref width 50 is followed by resize policy org.jvnet.flamingo.ribbon.resize.CoreRibbonResizePolicies$High2Mid with larger pref width

        at org.jvnet.flamingo.utils.FlamingoUtilities.checkResizePoliciesConsistency(FlamingoUtilities.java:575)
        at org.jvnet.flamingo.ribbon.AbstractRibbonBand.setRibbonTask(AbstractRibbonBand.java:566)
        at org.jvnet.flamingo.ribbon.RibbonTask.<init>(RibbonTask.java:90)
        at JFlamingow.<init>(JFlamingow.java:48)
        at JFlamingow$1.run(JFlamingow.java:76)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Yo seguiré buscándole y a ver si ya hay alguien que ha trabajado con esta herramienta que sepa que onda con esta Excepción pues que me lo haga saberrrr :D Chao!

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Respuesta

Recuerda que las bandas son de diferentes tamaños.
necesitas agregar este codigo.

band.setResizePolicies((List) Arrays.asList(new IconRibbonBandResizePolicy(band.getControlPanel())));

Fuente: http://blog.frankel.ch/flamingo-tutorial

Imagen de ezamudio

No entiendo

Lo que no entiendo es por qué alguien querría meter a su GUI esta abominación de interfaz que hizo Microsoft. No he escuchado un solo buen comentario de usuarios de Office al respecto de esa cosa, puras quejas.