2012-03-02 11 views
8

Soy un poco confundido sobre dónde poner esto:Cómo establecer JFrame verse y sentirse

try { 
    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); 
    UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); 
} catch(Exception e){ 

} 

no me extiendo la clase JFrame sino que se utiliza JFrame f = new JFrame(); Gracias: D

+0

Asegúrese de que el look'n'feel está configurado ** ** antes de inicializar el marco. –

+0

[Estableciendo el aspecto y la sensación del programa] (http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html#programmatic) – chicout

Respuesta

6

lugar más común para pon esto, está justo dentro de tu método static void main (String [] args). Al igual que :

public static void main(String[] args) 
{ 
    try 
    { 
     UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); 
    } 
    catch(Exception e){ 
    } 
    new YourClass(); //start your application 
} 

para obtener más información vistazo a este sitio: http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

+2

básicamente correcto, pero no recomendado para Nimbus :) comenzó su vida en com.sun. * en jdk6 con la certeza de ser movido a javax.swing en jdk7. Entonces, en lugar de codificar el nombre de la clase, consulta el UIManager para ver el lookAndFeels instalado y recorrerlo hasta encontrar una clase que contenga "Nimbus". – kleopatra

+0

Para ser honesto, nunca utilizo Look and Feel para mis programas de Java. ¡Pero si alguna vez lo haré, usaré tu fragmento! muchas gracias –

9

Nota: esto no es una respuesta a la pregunta (que era donde para ajustar la LAF). En su lugar, está respondiendo la pregunta cómo-hacerlo establecer una LAF de una manera que es independiente en su nombre de paquete. Simplifica la vida en caso de que la clase se mueva, como f.i. Nimbus desde com.sun * a javax.swing.

El enfoque básico es consultar el UIManager para sus LAF instaladas, recorrerlas hasta que se encuentre una coincidencia y configurar eso. Here'r tales métodos como se aplican en SwingX:

/** 
* Returns the class name of the installed LookAndFeel with a name 
* containing the name snippet or null if none found. 
* 
* @param nameSnippet a snippet contained in the Laf's name 
* @return the class name if installed, or null 
*/ 
public static String getLookAndFeelClassName(String nameSnippet) { 
    LookAndFeelInfo[] plafs = UIManager.getInstalledLookAndFeels(); 
    for (LookAndFeelInfo info : plafs) { 
     if (info.getName().contains(nameSnippet)) { 
      return info.getClassName(); 
     } 
    } 
    return null; 
} 

Uso (aquí sin manejo de excepciones)

String className = getLookAndFeelClassName("Nimbus"); 
UIManager.setLookAndFeel(className); 
8

UIManager.setLookAndFeel() no funcionará en los componentes que ya están creados. Aquí hay una buena manera de establecer el Look And Feel para cada ventana en su aplicación. Esto lo configurará en todas las ventanas abiertas en su programa. Cualquier nueva ventana creada usará lo establecido por el UIManager.

UIManager.setLookAndFeel(lookModel.getLookAndFeels().get(getLookAndFeel())); 
    for(Window window : JFrame.getWindows()) { 
     SwingUtilities.updateComponentTreeUI(window); 
    } 
2

Usted puede poner este bloque en su principal método después de haber creado el JFrame, o en el constructor de una clase que se extiende JFrame.

 

    try 
    { 
     //Set the required look and feel 
     UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); 
     //Update the component tree - associate the look and feel with the given frame. 
     SwingUtilities.updateComponentTreeUI(frame); 
    }//end try 
    catch(Exception ex) 
    { 
     ex.printStackTrace(); 
    }//end catch 
 
0
try { 
     for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
      if ("Nimbus".equals(info.getName())) { 
       javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
       break; 
      } 
     } 
    } catch (ClassNotFoundException | InstantiationException || javax.swing.UnsupportedLookAndFeelException ex) { 
     java.util.logging.Logger.getLogger( Home.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    }