2012-02-20 10 views
23

मुझे जावा में जेबटन के साथ समस्या है, मूल रूप से मैं बटन की सीमा को अक्षम करना चाहता हूं (बटन जेडीस्कटॉपपेन में जोड़ा गया है)।जेबटन फोकस सीमा को अक्षम करें

JButton j = new JButton("BUTTON"); 
j.setIcon(icon1); //icon1 : icon// 
j.setFocusable(true); 
j.setContentAreaFilled(false); 
j.setBounds(90, 20, 130, 30); 
dtp.add(j); //dtp : JDesktopPane// 

यह सीमा इस छवि की तरह गायब हो गया दे सकता है:

यहाँ मेरी कोड है

enter image description here

लेकिन जब मेरी माउस क्लिक किया जाता है (चारों ओर ले जाया नहीं) बटन में, बटन के चारों ओर एक "डॉट" सीमा है, जैसे:

enter image description here

तो, मैं बटन कैसे सेट कर सकता हूं ताकि जब मैं बटन क्षेत्र के चारों ओर माउस नहीं ले जाऊं, तब तक यह पहली छवि की तरह सेट नहीं हो जाता है, लेकिन जब मैं माउस को चारों ओर ले जाता हूं, तो वहां चारों ओर वर्ग होता है (हल्का नीला पृष्ठभूमि)?

+2

* "इस छवि की तरह सीमा गायब हो गई" * यह बहुत ही सहज ज्ञान युक्त दिखता है। गरीब एंड यूजर को भ्रमित और भ्रमित करने के लिए आप क्या कर रहे हैं? –

+0

तो, इस मामले में आप कौन से शब्दों को सबसे अच्छा मानते हैं? बीटीडब्ल्यू, अंग्रेजी मेरी पहली भाषा नहीं है। –

+0

मैं सीमाहीन बटन का जिक्र नहीं कर रहा था 'गैर-सहज ज्ञान युक्त', जो आपने लिखा था। आपने जो लिखा वह काफी स्पष्ट है। किसी भी भ्रम के लिए खेद है। –

उत्तर

0

यदि यह आप मदद कर सकते हैं Remove border

या शायद इस

Border emptyBorder = BorderFactory.createEmptyBorder(); 
yourButton.setBorder(emptyBorder); 
+0

जब मैं "सीमा खाली सीमा = BorderFactory.createEmptyBorder(); yourButton.setBorder (खाली सीमा)" सेट करता हूं; यह मुझे बिना किसी प्रभाव के सामान्य बटन दिया। –

83

कि सीमा नहीं है देखते हैं। यह फोकस है। आप का उपयोग कर इसे हटा सकते हैं:

jButton1.setFocusPainted(false); 
+0

बिल्कुल वही जो मैं खोज रहा था। धन्यवाद! – brimborium

+0

:) ............... – zari

1

मुझे नहीं लगता कि हमेशा की तरह JButton के साथ ऐसा करने में एक अच्छा विचार है। यदि कुछ भी नहीं है, तो यह अलग-अलग प्लेटफ़ॉर्म (मैक & लिनक्स) में समान दिखाई नहीं देगा यदि आप इस बटन को विभिन्न प्लेटफ़ॉर्म में दिखाने की योजना बनाते हैं। सभी व्यावहारिक उद्देश्यों के लिए button.setFocusPainted(false); आपकी वर्तमान आवश्यकता का ख्याल रखना चाहिए।

व्यवहार भिन्नता से बचने के लिए व्यवहार (कार्रवाई श्रोताओं के साथ) के साथ विस्तारित JLabel का उपयोग करने पर विचार करें।

4

इस पुराने धागा हो सकता है, लेकिन मैं के साथ button.setFocusable(false)

आशा है कि यह उन जिसका अभी भी कुछ जवाब की तलाश में के लिए मदद करता है मेरा हल किया। चीयर्स।

+0

यह ध्यान रखना महत्वपूर्ण है कि टूलबार के लिए यह सही डिफ़ॉल्ट व्यवहार है। विंडोज़ फॉर्म के साथ विजुअल स्टूडियो में टूलस्ट्रिप में टैबशॉप डिफ़ॉल्ट रूप से गलत पर सेट होता है। टूलबार बटन और टॉगलबूटन पर बिंदीदार सीमाओं से छुटकारा पाने के लिए उपरोक्त मेरे यूआई फिक्स का उपयोग करें, जो उन्हें विंडोज़ में या बिना फोकस के कभी नहीं रखता है। – Goombert

2

खुदाई के बाद मैं एक बेहतर समाधान के साथ आया हूं। विंडोज़ पर जीटीके अनुप्रयोगों में यह एक आम यूआई बग भी है, उनमें से एक गिंप है। यह मुझे बहुत परेशान करता है इसलिए मैं इसे हर नियंत्रण पर मैन्युअल रूप से सेट करने से बेहतर सुधार ठीक करना चाहता था।

वर्कअराउंड सभी सामान्य नियंत्रणों पर ध्यान केंद्रित करने के लिए रंग सेट करता है जिसे पारदर्शी होने वाला नहीं माना जाता है। मैं विजुअल स्टूडियो में विंडोज फॉर्म के साथ बड़े पैमाने पर गया और परीक्षण किया। टूलबार बटन और ToggleButtons को ध्यान केंद्रित करते समय भी बिंदीदार सीमा नहीं होनी चाहिए। टूलबार सेट किया जाना चाहिए फोकस करने योग्य (झूठा); डिफ़ॉल्ट रूप से वे विंडोज में हैं। स्विंग में हर दूसरे नियंत्रण में बिंदीदार सीमा होनी चाहिए, लेकिन केवल जब ध्यान केंद्रित किया जा रहा हो।

 // Removes the dotted border around controls which is not consistent with Windows 
     UIManager.put("Button.focus", new ColorUIResource(new Color(0, 0, 0, 0))); 
     UIManager.put("ToggleButton.focus", new ColorUIResource(new Color(0, 0, 0, 0))); 

     // ways to remove it from other controls... 
     UIManager.put("CheckBox.focus", new ColorUIResource(new Color(0, 0, 0, 0))); 
     UIManager.put("TabbedPane.focus", new ColorUIResource(new Color(0, 0, 0, 0))); 
     UIManager.put("RadioButton.focus", new ColorUIResource(new Color(0, 0, 0, 0))); 
     UIManager.put("Slider.focus", new ColorUIResource(new Color(0, 0, 0, 0))); 

     // figure out combobox 
     UIManager.put("ComboBox.focus", new ColorUIResource(new Color(0, 0, 0, 0))); 
संबंधित मुद्दे