2012-06-19 13 views
5

एक प्रोग्राम में मैं काम कर रहा हूं, किसी टेक्स्टफील्ड को कुछ बिंदु पर कुछ टेक्स्ट प्रदर्शित करना होगा।स्ट्रिंग को साफ़ करने के लिए कैसे करें?

output.setText(outputString); 
outputString = ""; 

आउटपुट एक JTextField है। कोड की ये पंक्तियां एक विधि में हैं, और जब इसे पहली बार कहा जाता है, तो यह पूरी तरह से ठीक काम करता है। हालांकि, जब इसे एक और समय कहा जाता है, तो मूल आउटपुट स्ट्रिंग टेक्स्ट अभी भी बना रहता है। ऐसा क्यों होता है, और मैं इसे कैसे ठीक कर सकता हूं?

ठीक है, मुझे लगता है कि ऐसा होता है क्योंकि स्ट्रिंग अपरिवर्तनीय हैं। बात यह है कि आउटपुट स्ट्रिंग कभी नहीं बदलती है, इसलिए इसमें अभी भी प्रारंभिक विधि कॉल से टेक्स्ट है।

मैं, किसी भी तरह, स्ट्रिंग में टेक्स्ट कैसे बदलूं?

+0

ठीक है दोस्तों, मैं बस की कोशिश की है कि एक ही जवाब है कि मुझे दिया गया 5 बार। यह काम नहीं करता है। मैंने output.setText ("") रखा; output.setText (outputString) से ठीक पहले ;, लेकिन outputString नहीं बदलता है, इसलिए इसमें अभी भी पाठ के पहले खंड शामिल हैं। – kullalok

+0

पूर्ण कोड पोस्ट करें ... –

+0

"output.setText (outputString) से ठीक पहले"। बेशक यह पाठ को साफ़ नहीं करेगा, आप इसे अभी ओवरराइट कर रहे हैं। यदि आप पाठ को साफ़ करना चाहते हैं, तो आपको इसके बाद setText ("") को कॉल करना होगा। –

उत्तर

4

आपको JTextField ऑब्जेक्ट से टेक्स्ट साफ़ करना होगा। SetText() के साथ एक तर्क के रूप में एक चर के रूप में भेजना उस ऑब्जेक्ट को उस चर को टाई नहीं करता है। यह बस स्ट्रिंग की प्रतिलिपि बनाता है।

output.setText(""); 

पाठ शून्य या खाली है, तो बस पुराने पाठ को हटाने का प्रभाव पड़ता है।

http://docs.oracle.com/javase/6/docs/api/javax/swing/text/JTextComponent.html#setText%28java.lang.String%29

5

अपने चर की सामग्री को पाठ की स्थापना है कि चर और उस पाठ क्षेत्र के बीच एक स्थायी संबंध की स्थापना की नहीं है, आप पाठ साफ़ करना चाहते हैं, तो आप इस्तेमाल कर सकते हैं

output.setText(""); 
0

क्या आप JTextField के पाठ को सेट करने का प्रयास करने के बाद आउटपुटस्ट्रिंग को "" सेट कर रहे हैं? आप इस तरह से कुछ करने के लिए प्रयास करना चाहिए यदि ऐसा है तो:

output.setText(""); 
0
output.setText(""); 

इस समस्या

1

ऐसा क्यों होता है का समाधान होगा?

स्ट्रिंग अपरिवर्तनीय हैं।

स्ट्रिंग के लिए हमेशा एक नया संदर्भ है। इस प्रकार, जब आप outputString = ""; पर कॉल करते हैं, तो नया स्ट्रिंग बनाया जाता है।

मैं इसे कैसे ठीक कर सकता हूं?

कॉल output.setText("");

1

आपका कोड क्या कर रहा है, पहले टेक्स्ट आउटपुट की सामग्री को अपने आउटपुट स्ट्रिंग वेरिएबल की सामग्री में सेट कर रहा है: output.setText(outputString);

आपकी अगली कोड लाइन स्ट्रिंग ऑब्जेक्ट को नहीं बदलेगी, जो आपके टेक्स्ट फ़ील्ड की सामग्री है, बल्कि खाली स्ट्रिंग वैरिएबल को संदर्भित करने के लिए अपने आउटपुट स्ट्रिंग वैरिएबल को सेट करें। जावा में स्ट्रिंग्स अपरिवर्तनीय हैं, एक स्ट्रिंग वैरिएबल में बदलाव करना असंभव है।

जैसा कि कई लोगों ने कहा है, आपको कॉल करके अपने टेक्स्ट फ़ील्ड सामग्री को सेट करने की आवश्यकता है: jTextFieldVar.setText(""); या jTextFieldVar.setText(null);

0

मुझे लगता है कि आप के लिए देख रहे हैं:

output.setText(""); 
2

मुझे लगता है कि आप बहुत कुछ महत्वपूर्ण गलतफहमी कर रहे हैं। जावा स्ट्रिंग्स अपरिवर्तनीय हैं जिसका मतलब है कि आप उन्हें बदल नहीं सकते हैं।

"मैं किसी भी तरह, स्ट्रिंग में टेक्स्ट कैसे बदलूं?"

आप नहीं कर सकते। स्ट्रिंग में पाठ बदला नहीं जा सकता है। यह अपरिवर्तनीय है। किसी भी "समाधान" जिसमें स्ट्रिंग में टेक्स्ट को बदलना शामिल है, जावा में काम नहीं करेगा। (है कि मिल गया?)

जब आप ऐसा करते:

output.setText(outputString); 
outputString = ""; 

असाइनमेंट मूल्य है कि पाठ क्षेत्र में प्रदर्शित किया जाता है नहीं बदलता है। यह केवल स्ट्रिंग को बदलता है जो स्थानीय चर outputString को संदर्भित करता है।

और जब आप ऐसा करते हैं:

output.setText(""); 
output.setText(outputString); 

यह outputString बदलने के लिए कारण नहीं है। यह केवल प्रदर्शित टेक्स्ट को कुछ भी नहीं बदलता है और फिर इसे तुरंत outputString पर बदल देता है जो वर्तमान में संदर्भित करता है।

आप कुछ भी नहीं करने के लिए पाठ क्षेत्र में प्रदर्शित मान बदलना चाहते हैं, तो आप सिर्फ यह कर:

output.setText(""); 

शायद दूसरी बात यह है कि आप अपनी सोच में गलत मिल गया है तो आप इस कि लगता है कि है :

output.setText(outputString); 

पाठ क्षेत्र output और चर outputString ... ऐसा है कि जब क्षेत्र में उपयोगकर्ता प्रकार, outputString चर जादुई अद्यतन किया जाता है के बीच एक रिश्ता सेट करता है। ऐसा नहीं है। वास्तव में, ऐसा नहीं हो सकता है, क्योंकि आप चर के पते को पार नहीं कर सकते हैं।

वास्तव में, output.setText(outputString); सिर्फ पाठ बॉक्स वस्तु को outputString का मूल्य गुजरता है। यदि और जब उपयोगकर्ता बॉक्स में कुछ टाइप करता है, तो वर्ण कहीं और संग्रहीत होते हैं, और केवल आपके कोड पर वापस आते हैं ... एक नई स्ट्रिंग ... जब आपका कोड output.getText() पर कॉल करता है।

0

यह ठीक काम करेगा।

output.setString ("");

0

अन्य उत्तरों इस तथ्य को इंगित करते हैं कि स्ट्रिंग्स अपरिवर्तनीय हैं सटीक हैं।

लेकिन अगर आप की "एक स्ट्रिंग समाशोधन" कार्यक्षमता, आप कर सकते हैं use a StringBuffer instead and call this on it करना चाहते हैं:

stringBuffer.delete(0, stringBuffer.length()); 
संबंधित मुद्दे