20/2/10

Substance Java look & feel

Substance Java es un proyecto enfocado en la apariencia visual de las GUI (Interfaces Graficas de Usuario) para Java. Esta libreria permite agregar una apariencia mas agradable al usuario final y disponde de varios skin ya predefinidos en el JAR, como tambien el autor tambien deja disponible las fuentes de la libreria, asi tambien documentacion de su uso (en ingles).

INSTALACION
Paso 1. Ingresa a la pagina de Substance y dirigete a la seccion de GET LATEST VERSION. Una vez ahi,te muestra una lista con las descargas disponibles, en primer lugar se encuentra la documentacion y codigo fuente de la libreria, si deseas puedes bajarte ese paquete para echar un ojo de como funciona la libreria.
El paquete necesario para la utilizacion de la libreria es "Substance 5.3 Library", se encuentra en segundo lugar, esta es la libreria completa, las restantes son versiones Lite.
Paso 2. Una ves que te descargaste el paquete, se debe proceder a su instalacion. Colocamos el paquete "Substance.jar" en el disco duro, por ejemplo:
Esta ubicacion no es una regla, puedes colocarla donde quieras, ademas de que yo me baje tambien el paquete Substance-All para cureosear un poco el codigo.

Paso 3. Abre Netbeans  y dirigete al menu TOOLS - LIBRARIES, una ves abierta la ventana "Library Manager", presiona el boton New Library,  entonces colocas un nombre a la libreria, "substance" y OK
Paso 4. Una ves creada la libreria, procedemos a agregar el archivo JAR. para ello situate en la pestaña "Classpath" y presiona el botn "Add Jar/Folder", busca el archivo substance.jar en tu pc y OK
Ya esta instalada la libreria Substance

Primer programa con Substance.

1. Crea un nuevo proyecto en netbeans, dale el nombre que quieras, luego añade un JFrame y coloca los controles que gustes.
3. Añade la libreria al projecto

2. en el Main del proyecto, añade este codigo:

public static void main(String[] args) {        
        EventQueue.invokeLater(new Runnable(){
        public void run(){
            try{
                JFrame.setDefaultLookAndFeelDecorated(true);
                SubstanceLookAndFeel.setSkin("org.jvnet.substance.skin.DustCoffeeSkin");
            }              
            catch(Exception e){
            }               
    //donde skinform, es el nombre del JFrame donde se aplicara el skin
            new skinform().setVisible(true);
        }
        }); 
}

Algunos skin disponibles:

10 comentarios:

  1. Mil gracias x tu aportación!!! No inventes es justo lo que necesito!
    Quiero más! =D

    ResponderEliminar
  2. buenisisisisismo aporte bro hasta que pude hacer funcionar eso de los skins muchisisismas gracias

    saludos coordiales

    ResponderEliminar
  3. Holaaaa!!!! super buenisimo,..... quiero utilizarlo.... pero no consigo para descargarlo... alguien me lo puede facilitar enviar por correo!!!! plis. =)

    ResponderEliminar
  4. es que la direccion que publicastes no esta disponible el archivo.... de verdad lo quiero utilizar.... plissss

    ResponderEliminar
  5. es que la direccion que publicastes no esta disponible el archivo.... de verdad lo quiero utilizar.... plissss

    ResponderEliminar
  6. hola tengo un problema no encuentro el jar, voy al proveedor teóricamente y no hay forma, te importaría pasarme el link o directamente el jar??
    adriaberge@hotmail.com

    ResponderEliminar
  7. Hola que tal por si a alguien le llega a servir yo encontre el .jar en la sig pagina

    http://grepcode.com/snapshot/repo1.maven.org/maven2/org.java.net.substance/substance/5.3

    espero les sirva y una pregunta

    ya que esta el skin como puedo quitar el contorno de la ventana lo que antes se quitaba con undecorated espero alguien sepa

    ResponderEliminar
  8. Exception in thread "main" java.lang.NullPointerException
    at org.jvnet.substance.SubstanceDefaultListCellRenderer.getListCellRendererComponent(SubstanceDefaultListCellRenderer.java:69)
    at org.jvnet.substance.SubstanceDefaultComboBoxRenderer.getListCellRendererComponent(SubstanceDefaultComboBoxRenderer.java:88)
    at org.jvnet.substance.SubstanceComboBoxUI.getDefaultSize(SubstanceComboBoxUI.java:244)
    at javax.swing.plaf.basic.BasicComboBoxUI.getDisplaySize(BasicComboBoxUI.java:1368)
    at javax.swing.plaf.basic.BasicComboBoxUI.getBaseline(BasicComboBoxUI.java:955)
    at javax.swing.JComponent.getBaseline(JComponent.java:2560)
    at javax.swing.GroupLayout$ComponentSpring.getBaseline(GroupLayout.java:3075)
    at javax.swing.GroupLayout$BaselineGroup.calculateBaselineAndResizeBehavior(GroupLayout.java:2732)
    at javax.swing.GroupLayout$BaselineGroup.calculateSize(GroupLayout.java:2708)
    at javax.swing.GroupLayout$Group.calculatePreferredSize(GroupLayout.java:1602)
    at javax.swing.GroupLayout$Spring.getPreferredSize(GroupLayout.java:1346)
    at javax.swing.GroupLayout$Group.getSpringSize(GroupLayout.java:1638)
    at javax.swing.GroupLayout$Group.calculateSize(GroupLayout.java:1627)
    at javax.swing.GroupLayout$Group.calculatePreferredSize(GroupLayout.java:1602)
    at javax.swing.GroupLayout$Spring.getPreferredSize(GroupLayout.java:1346)
    at javax.swing.GroupLayout$Group.getSpringSize(GroupLayout.java:1638)
    at javax.swing.GroupLayout$Group.calculateSize(GroupLayout.java:1622)
    at javax.swing.GroupLayout$Group.calculatePreferredSize(GroupLayout.java:1602)
    at javax.swing.GroupLayout$Spring.getPreferredSize(GroupLayout.java:1346)
    at javax.swing.GroupLayout$Group.getSpringSize(GroupLayout.java:1638)
    at javax.swing.GroupLayout$Group.calculateSize(GroupLayout.java:1622)
    at javax.swing.GroupLayout$Group.calculatePreferredSize(GroupLayout.java:1602)
    at javax.swing.GroupLayout$Spring.getPreferredSize(GroupLayout.java:1346)
    at javax.swing.GroupLayout.calculateAutopadding(GroupLayout.java:1071)
    at javax.swing.GroupLayout.prepare(GroupLayout.java:1059)
    at javax.swing.GroupLayout.preferredLayoutSize(GroupLayout.java:878)
    at java.awt.Container.preferredSize(Container.java:1788)
    at java.awt.Container.getPreferredSize(Container.java:1773)
    at javax.swing.JComponent.getPreferredSize(JComponent.java:1662)
    at org.jvnet.substance.SubstanceRootPaneUI$SubstanceRootLayout.preferredLayoutSize(SubstanceRootPaneUI.java:772)
    at java.awt.Container.preferredSize(Container.java:1788)
    at java.awt.Container.getPreferredSize(Container.java:1773)
    at javax.swing.JComponent.getPreferredSize(JComponent.java:1662)
    at java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:719)
    at java.awt.Container.preferredSize(Container.java:1788)
    at java.awt.Container.getPreferredSize(Container.java:1773)
    at java.awt.Window.pack(Window.java:808)
    at Display.login.initComponents(login.java:123)
    at Display.login.(login.java:15)
    at logica.Huellita.main(Huellita.java:17)


    amigo se que con preguntar no atropello a nadie y si aprendo un poco pero cree mi aplicacion y al ejecutarla me sale el siguiente error si alguien me ayuda con la orientacion estaria muy agradecido

    ResponderEliminar
  9. el error te muestra un valor nulo en la linea 69

    ResponderEliminar
  10. AMIGO CUANDO APLICO EL SKIN A MI APLICACION FUNCIONA BIEN EL UNICO PROBLEMAS ES CON LOS REPORTES SE MUESTRAN EN EL VISUALIZADOR PERO AL DAR CLIC EN INPRIMIR NO FUNCIONA, Y AL QUITAR EL SKIN FUNCIONA DE MANERA CORRECTA EL BOTON, AYUDA?

    ResponderEliminar