2010-02-17 14 views
19

क्या JTextField में सीमा को हटाने के लिए वैसे भी है?स्विंग JTextField सीमा को कैसे हटाएं?

txt = new JTextField(); 
txt.setBorder(null); // <-- this has no effect. 

मैं वास्तव में यह एक JLabel तरह देखने के लिए चाहते हो जाएगा - लेकिन मैं अभी भी यह एक JTextField हो सकता है क्योंकि मैं लोगों को सक्षम यह उजागर होना चाहता हूँ की जरूरत है।

+0

यह जानना दिलचस्प होगा कि आप किस प्रणाली/पर्यावरण का उपयोग कर रहे हैं। या इसमें अधिक कोड शामिल है ... यह (फिर से) मेरे लिए पूरी तरह से काम करता है। कुछ छवियों (और कोड) के साथ इस छवि को देखें: http: // img709।imageshack.us/img709/9034/fields.jpg –

उत्तर

17

आपके पिछले question के उत्तर से आप जानते हैं कि कुछ पीएल & एफएस सीमा को पकड़ सकता है।

इसलिए स्पष्ट समाधान setBorder विधि को ओवरराइड करना है कि पीएल & एफ कॉल कर रहा है, और परिवर्तन को त्यागें।

JTextField text = new JTextField() { 
    @Override public void setBorder(Border border) { 
     // No! 
    } 
}; 
+0

@finnw: ब्रैकेट int 'null' टाइप करें। आपको इसे ओवरराइड करने की आवश्यकता नहीं है। – Ramses

+0

@ user3300710 टाइप 'नल' कहां? जैसा कि मूल प्रश्न में है, 'सेटबॉर्डर (शून्य)' अविश्वसनीय है (यानी जब आप इसे स्वयं परीक्षण करते हैं तो यह काम करता है, लेकिन क्षेत्र में काम नहीं कर सकता है, या कुछ चीजों के बाद यादृच्छिक रूप से कुछ समय बाद)। –

+0

@finnw: ठीक है आप सही हैं। मैंने मूल प्रश्न को ध्यान से नहीं पढ़ा, क्षमा करें। – Ramses

3

इसे पर सेट करने का प्रयास करें BorderFactory.createEmptyBorder() शून्य के बजाय। कभी-कभी यह "चाल करता है" क्योंकि इसे शून्य पर सेट करने के लिए वास्तव में एक अलग अर्थ होता है।

यदि यह काम नहीं करता है, तो यह संभव है कि आप जिस लुक और महसूस का उपयोग कर रहे हैं वह कुछ ओवरराइड कर रहा है। क्या आप डिफ़ॉल्ट या कुछ कस्टम का उपयोग कर रहे हैं?

+3

@ मार्कस, स्विंग के साथ अपने अनुभव में, इसके साथ समस्याएं अक्सर एक समस्या तक सीमित नहीं होती हैं, बल्कि उन्हें प्याज की तरह छीलना पड़ता है। अपना पूरा कोड देखे बिना, मुझे नहीं पता कि यह समस्या को पूरी तरह से हल करेगा या नहीं। अगर मैं बग से निपट रहा था, तो यह पहली बात होगी जो मैं कोशिश करूंगा। अगर यह काम नहीं करता है, तो मैं जांच करने की कोशिश करता हूं कि देखो और महसूस (यदि आप कुछ फैंसी का उपयोग कर रहे हैं) हस्तक्षेप कर रहा है। कारणों का उल्लेख करने के लिए – Uri

52
JTextField textField = new JTextField(); 
textField.setBorder(javax.swing.BorderFactory.createEmptyBorder()); 

http://java.sun.com/javase/6/docs/api/javax/swing/BorderFactory.html

जब सीमा की स्थापना 'अशक्त', आप वास्तव में देखो & कह रहे हैं करने के लिए (ऑपरेटिंग सिस्टम की) देशी बॉर्डर शैली का उपयोग करने अगर वहाँ एक है लग रहा है।

+7

+1 क्यों नल अपेक्षित काम नहीं करता –

+0

-1 होना चाहिए। क्योंकि यह काम नहीं करता है। जो समाधान काम करता है वह सुझाव दिया गया है कि: कुछ भी करने के लिए सेटबॉर्डर ओवरराइड –

+2

गैर-स्पष्ट कारणों से संदर्भ के आधार पर यह काम कर सकता है या नहीं भी। http://stackoverflow.com/questions/2281539/setborder-on-jtextfield-does-not-work-or-does-it हालांकि, यह अच्छी जानकारी है और मुझे इसे कम करने का कोई कारण नहीं दिख रहा है। –

2

नहीं, आप सीमा को नहीं हटा सकते हैं। विशेष रूप से एडब्ल्यूटी घटकों के प्रदर्शन पर। वे देशी विजेट सेट का उपयोग करते हैं (जावा के बाहर खींचे जाते हैं)। लाइन है कि अपनी पृष्ठभूमि के समान है बनाने के लिए

प्रयास करें ... उदाहरण के लिए अगर आपकी पृष्ठभूमि सफेद है तो आप के लिए है:

setBackground(Color.white); 
-1
:

setBorder(BorderFactory.createLineBorder(Color.white)); 

तो सफेद करने के लिए पृष्ठभूमि सेट

यह सभी परिस्थितियों में काम करता है बनाने के लिए एक ही रास्ता निम्नलिखित सेटिंग है:

setBorder (BorderFactory.createLineBorder (new Color (0, 0, 0, 0), 2)); 

अन्यथा (जब आप मूल कंटेनर की शून्य पृष्ठभूमि है) आप "J" कर्सर को अपने JTextField के बाएं किनारे पर हमेशा के लिए शेष देखेंगे। (आप अलग सीमा मोटाई के लिए कुछ परीक्षण करने के लिए और काफी अजीब तरीके से पालन JTextField कर्सर स्थानों जब आप इसे पहली बार सक्रिय करें।)

वैकल्पिक रूप से आप सेट कर सकते हैं:

setBorder (BorderFactory.createLineBorder (getBackground(), 2)); 

लेकिन आप क्षेत्र opticaly प्राप्त करेंगे सभी चार दिशाओं में 2 पिक्सल से बड़ा। यदि आप सीमा मोटाई निर्दिष्ट नहीं करते हैं, तो आप इस सीमा के बीच कर्सर और हमेशा के लिए शेष क्षेत्र देखेंगे।

1
txt.setBorder(new LineBorder(Color.BLACK,0)); 

काम कर सकता है।

संबंधित मुद्दे