2012-03-02 18 views
8

io sono un po 'confuso su dove mettere questo:Come impostare JFrame look and feel

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

} 

non ho estendere la classe JFrame ma usato JFrame f = new JFrame(); Grazie: D

+0

Assicurarsi che il Look'n'Feel sia configurato ** ** prima di inizializzazione del telaio. –

+0

[Impostazione programmatica dell'aspetto] (http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html#programmatic) – chicout

risposta

6

luogo più comune per Metti questo, è giusto dentro il tuo metodo statico void main (String [] args). Come così:

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

per ulteriori informazioni un'occhiata a questo sito: http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

+2

sostanzialmente corretto, ma non consigliato per Nimbus :) ha iniziato la sua vita in com.sun. * in jdk6 con la certezza di essere spostato in javax.swing in jdk7. Quindi, invece di codificare a fondo il nome della classe, interrogare UIManager per i lookAndFeels installati e passare attraverso di essi finché non viene trovata una classe contenente "Nimbus" – kleopatra

+0

Per essere onesti, non uso mai alcun aspetto per i miei programmi java. Ma se mai lo farò, userò il tuo snippet !! grazie molto –

9

Nota: questa non è una risposta alla domanda (che era dove per impostare la LAF). Invece, sta rispondendo alla domanda come fare impostare un LAF in un modo che è indipendente dal suo nome del pacchetto. Semplifica la vita nel caso in cui la classe venga spostata, come f.i. Nimbus da com.sun * a javax.swing.

L'approccio di base è interrogare UIManager per i suoi LAF installati, passarli in loop fino a trovare una corrispondenza e impostarli. Here'r tali metodi, configurate 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; 
} 

Usage (qui senza gestione delle eccezioni)

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

UIManager.setLookAndFeel() non funziona su componenti già creati. Ecco un buon modo per impostare Look and Feel per ogni finestra dell'applicazione. Questo lo imposterà su tutte le finestre aperte nel tuo programma. Qualsiasi nuova finestra creata utilizzerà ciò che è stato impostato da UIManager.

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

Si può mettere questo blocco nel metodo principale dopo aver creato il JFrame, o nel costruttore di una classe che estende 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); 
    }