2011-02-14 22 views
7

मेरे पास निम्न सरल कोड है:JButton को सेट बैकग्राउंड क्यों काम नहीं करता है?

btn = new JButton(); 
btn.setBackground(backgroundColor) 

मैंने काम किया जब मैंने काम किया:

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel"); 

लेकिन उपरोक्त पंक्ति पर टिप्पणी करने के बाद यह काम करना बंद कर दिया। क्या कोई जानता है कि यह क्यों हो सकता है और मैं स्पष्ट रूप से देखने और महसूस के बिना बटन पर पृष्ठभूमि रंग कैसे सेट कर सकता हूं?

जोड़ा गया ऐसा लगता है कि मुझे getBackground का उपयोग करने की आवश्यकता है। लेकिन मैं नहीं जानता कि कैसे।

+8

एक असंबंधित नोट पर: UIManager कि 'का उपयोग नहीं करें 'इस तरह की रेखा: पीएलएफ़ वर्ग नाम हार्डकोडिंग का मतलब है कि आपका कोड तब नहीं चलाएगा जब वह पीएलएफ़ उपलब्ध नहीं है (उदाहरण के लिए गैर-विंडोज जेडीके ** या ** पर नए विंडोज जेडीके पर जो उस विशिष्ट वर्ग को शिपिंग बंद कर सकता है)। ['UIManager.getSystemLookAndFeelClassName()'] (http://download.oracle.com/javase/6/docs/api/javax/swing/UIManager.html#getSystemLookAndFeelClassName()) हो सकता है कि आप बाद में क्या हो। –

+0

क्या आप अधिक जानकारी पोस्ट कर सकते हैं? आपका UIManager.setLookAndFeel ("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel"); btn.setBackground (backgroundColor) कमांड के बाद या उससे पहले है? – Serhiy

+0

@ सेरी, मेरी लुक एंडफेल पहले थी। और मैं इसका बिल्कुल उपयोग नहीं करना चाहता हूं। – Roman

उत्तर

6

setBackground से() जावाडोक:

यह देखो पर निर्भर है और इस संपत्ति का सम्मान करने लग रहा है, कुछ इसे अनदेखा करने के लिए चुन सकते हैं।

शायद आपके एलएएफ ने इसे अनदेखा कर दिया।

+0

हालांकि यह संभव है कि यह सिर्फ इसे अनदेखा कर दे, यह बेहद असंभव है। सबसे पहले setOpaque विकल्प की जांच करें, क्योंकि यह अधिक संभावित कारण है। – Reid

0

समस्या भी आप जिस बटन को बना रहे हैं उसके साथ भी हो सकती है।

public class Test extends JApplet{ 

public void init() 
{ 
    java.awt.EventQueue.invokeLater(new Runnable() 
    { 
     public void run() 
     { 
      setSize(200, 200); 
      setLayout(null); 

      JPanel p = new JPanel(); 
      getContentPane().add(p); 
      p.setSize(getSize()); 
      p.setLayout(null); 

      JButton b = new JButton("test"); 
      p.add(b); 
      b.setBounds(10, 10, 100, 20); 
      b.setBackground(Color.GREEN); 

     } 
    }); 
} 

}

0

, बस एक बार बटन आप के लिए पृष्ठभूमि सेट करना चाहते हैं पर क्लिक करें और फिर गुण विंडो पर जाएं: यदि कोड ऊपर जाँच करें। वहां पर, दूसरा विकल्प पृष्ठभूमि होगा। अपने इलिप्सिस पर क्लिक करें, और आप रंग को अपनी पसंद में बदल सकते हैं। कार्यक्रम चलाने के बाद तक रंग आपके फ्रेम में बटन पर प्रदर्शित नहीं किया जाएगा। आप देख सकते हैं कि बटन आपके पसंदीदा रंग में है।

10

यह सच करने के लिए तत्व की अपारदर्शी स्थापित करने के लिए आवश्यक है रंग भरे जाने के लिए

 btn = new JButton(); 
    btn.setOpaque(true); 
    btn.setBackground(backgroundColor); 
+0

यह स्वीकार्य उत्तर होना चाहिए, ठीक वही जो मैं खो रहा था – Argento

1

btn.setBorderPainted (गलत) जोड़ने