2012-03-02 26 views
8

मैं एक तरह से जहां इस डाल करने के लिए पर उलझन में हूँ करने के लिए:कैसे JFrame देखने की स्थापना की और महसूस

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

} 

मैं JFrame वर्ग का विस्तार नहीं किया था, लेकिन उनका उपयोग JFrame f = new JFrame(); धन्यवाद: डी के लिए

+0

** फ्रेम initialising यकीन Look'n'Feel कॉन्फ़िगर की गई है ** से पहले। –

+0

[प्रोग्रामेटिक रूप से देखो और महसूस करना] (http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html#programmatic) – chicout

उत्तर

6

सबसे आम जगह इसे रखें, अपने स्थैतिक शून्य मुख्य (स्ट्रिंग [] तर्क) विधि के अंदर सही है। तो जैसा:

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

अधिक जानकारी के लिए इस साइट को देखने के: http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

+2

मूल रूप से सही है, लेकिन निंबस के लिए अनुशंसित नहीं है :) इसने अपना जीवन शुरू किया jdk7 में javax.swing में स्थानांतरित होने की निश्चितता के साथ jdk6 में com.sun। *। तो क्लास नाम को कड़ी-कोडिंग करने के बजाय, यूआईएमएनेगर को इंस्टॉल किए गए लुक एंडफेल और लूप के लिए पूछें जब तक कि "निंबस" युक्त कक्षा – kleopatra

+0

ईमानदार होने के लिए, मैं कभी भी अपने जावा कार्यक्रमों के लिए किसी भी रूप और महसूस का उपयोग नहीं करता। लेकिन अगर मैं कभी करूंगा, तो मैं आपके स्निपेट का उपयोग करूंगा !! बहुत धन्यवाद –

9

नोट: इस सवाल (जहां एलएएफ स्थापित करने के लिए जो था) का उत्तर नहीं है। इसके बजाय, यह प्रश्न का उत्तर दे रहा है कैसे एक एलएएफ सेट करें जो इस तरह के पैकेज नाम पर स्वतंत्र है। वर्ग को स्थानांतरित करने के मामले में जीवन को सरल बनाता है, f.i. Com.sun * से javax.swing से Nimbus।

मूल दृष्टिकोण UIManager को इसके स्थापित एलएएफ के लिए पूछताछ करना है, जब तक कोई मिलान नहीं मिलता है तब तक उनके माध्यम से लूप करें। Here'r ऐसे तरीकों 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; 
} 

उपयोग (यहाँ अपवाद हैंडलिंग के बिना)

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

UIManager.setLookAndFeel() घटक है कि पहले से ही बनाई गई हैं पर काम नहीं करेगा। अपने आवेदन में हर खिड़की के लिए देखो और महसूस करने का एक अच्छा तरीका यहां है। यह इसे आपके कार्यक्रम में सभी खुले विंडोज़ पर सेट करेगा। बनाई गई कोई भी नई विंडो यूआईएमएनेजर द्वारा निर्धारित की गई चीज़ों का उपयोग करेगी।

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

आप अपने मुख्य विधि में इस ब्लॉक डाल सकते हैं के बाद आप JFrame, या एक वर्ग है कि 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); 
    }