2009-11-02 8 views
8

मैं एक जेसीकबॉक्स के लिए चयनित आइकन को एक अलग आइकन में बदलना चाहता हूं, उदाहरण के लिए एक जेसीकबॉक्स के लिए अक्षम चयनित आइकन कहें। मैं UIManager से अक्षम चयनित आइकन कैसे प्राप्त कर सकता हूं?डिस्प्ले एक्सेस और डिफ़ॉल्ट आइकन महसूस करते हैं?

मैंने कोशिश की UIManager.getIcon("CheckBoxUI.disabledSelectedIcon"); क्या यह गलत आइकन संपत्ति का नाम है या क्या वह संसाधन प्राप्त करने का गलत तरीका है?

उत्तर

3

AbstractButton के लिए कोड के माध्यम से देख रहे हैं, ऐसा लगता है कि disabledSelectedIconselectedIcon से ली गई है, जब तक यह setDisabledSelectedIcon के माध्यम से AbstractButton (या इस मामले में JCheckBox) पर निर्दिष्ट किया जाता है। इस मामले के साथ, UIManager.getIcon ("...") को कॉल करने से आप जिस ऑब्जेक्ट को खोज रहे हैं उसे वापस नहीं करेंगे।

संपादित करें:

नोट एक JCheckBox रूप AbstractButton एपीआई में परिभाषित है, बस के रूप में एक JButton एक आइकन हो सकता है एक icon क्षेत्र है। यह एक छवि है जो पाठ के बगल में प्रदर्शित होती है और 'चेक' या 'अनचेक' बॉक्स आइकन से अलग होती है जिसका आप उल्लेख कर रहे हैं।

चेक/अनचेक आइकन को एक ही कक्षा द्वारा संभाला जाता है, जो UIManager.getObject('CheckBox.icon') के साथ मिलता है। यह एक सबक्लास Icon है और इसकी जांच और अनचेक स्थिति दोनों की पेंटिंग को संभालता है। आप विभिन्न [L&F name]IconFactory कक्षाओं में इसके उदाहरण देख सकते हैं।

+1

बस चयनित आइकन, चेकबॉक्स.इलेक्टेड आइकन, या चेकबॉक्स II.selectedIcon के लिए पूछना, सभी वापसी शून्य। –

+0

आप उत्तर देने के लिए मुझे मानक आइकन परिवर्तित करने के तरीके के बारे में जानने के लिए सिन्थ पैकेज में गहरी खुदाई करने के लिए प्रेरित किया गया है। धन्यवाद। –

8

स्पष्ट रूप से डिफ़ॉल्ट रूप से कोई नहीं है। कम से कम, जब मैं इसे कॉल करने की कोशिश नहीं कर रहा हूं। कुंजी चेकबॉक्स को शामिल करता है, तो

बस UIManager.getLookAndFeelDefaults().keys() से चाबी डंपिंग निम्नलिखित का उत्पादन:

CheckBox.foreground 
CheckBox.border 
CheckBox.totalInsets 
CheckBox.background 
CheckBox.disabledText 
CheckBox.margin 
CheckBox.rollover 
CheckBox.font 
CheckBox.gradient 
CheckBox.focus 
CheckBox.icon 
CheckBox.focusInputMap 

akf's answer पढ़ने के बाद, मैं plaf.synth संकुल में UIManager कोड के माध्यम से खुदाई शुरू की और कॉल कि अनिवार्य रूप से प्रतिनिधि पाया मानक अक्षम करने के लिए कक्षाओं को देखने और महसूस करने के लिए कक्षाओं को शून्य से अक्षम करें। तो मैं इसके साथ समाप्त हुआ:

Icon checkedIcon = UIManager.getIcon("CheckBox.icon"); 
Icon dsiabledCheckedIcon = 
    UIManager.getLookAndFeel(). 
     getDisabledSelectedIcon(new JCheckBox(), checkedIcon); 
संबंधित मुद्दे