2011-06-12 13 views
7

मेरे पास कक्षा Probability है। मैं इसके लिए कस्टम रेंडरर (पहले से किया गया) और संपादक की तरह डबल का उपयोग करना चाहता हूं। लेकिन मुझे डबल एडिटर (केवल संख्या) भी नहीं मिल रहा है, इसलिए मुझे नहीं पता कि मुझे इसे कैसे कार्यान्वित करना चाहिए। सवाल यह है कि: मुझे इसे कैसे कार्यान्वित करना चाहिए?संभाव्यता सेल संपादक

* डबल संपादक से अंतर: यह केवल संख्या रेंज में 0..100

+1

सबसे पहले आप समझा सकते हैं कि "डबल संपादक" क्या है? –

+1

@ होवरक्राफ्ट फुल ऑफ़ ईल्स, यह 'टेबलसेल एडिटर' है जो jtable के सेल्स –

+0

में इनपुट युगल की अनुमति देता है। दिलचस्प सवाल, धन्यवाद। –

उत्तर

5

एक JFormattedTextField के बारे में क्या एक सारफॉर्मेटर रूपांतरण कर रहा है, और एक दस्तावेज़फिल्टर जो किसी भी वैध प्रतिशत मान को अस्वीकार करने के लिए नहीं है?

class PercentageFilter extends DocumentFilter { 
    insertString(FilterBypass bp, int offset, String adding, AttributeSet attrs) { 
     Document doc = bp.getDocument(); 
     String text = doc.getText(0, offset) + adding + doc.getText(offset, doc.getLength()-offset); 
     try { 
      double d = Double.parseDouble(text); 
      if(d < 0 || 100 < d) { 
       // to big or too small number 
       return; 
      } 
     } 
     catch(NumberFormatException ex) { 
      // invalid number, do nothing. 
      return; 
     } 
     // if we come to this point, the entered number 
     // is a valid value => really insert it into the document. 
     bp.insertString(offset, adding, attrs); 
    } 
} 

आप इसी तरह remove() और replace ओवरराइड करना चाहते हैं:

यहाँ एक उदाहरण DocumentFilter (प्रलेखन पढ़ने से परीक्षण नहीं किया,) है।

(मैं एक अधिक कुशल कार्यान्वयन हो सकता है लगता है, लेकिन यह सबसे उपयोगकर्ता के टाइपिंग की गति के लिए काफी तेजी से हो जाएगा, मुझे लगता है।)

यह फ़िल्टर आपकी AbstractFormatter कार्यान्वयन के getDocumentFilter विधि से लौटा दिया जाएगा।

+0

+1 ['DecEditor'] (http://stackoverflow.com/questions/2511270/advice-welcomed-on-creating-my-own-swing-component/2511415#2511415) एक उदाहरण है – trashgod

+0

बहुत बहुत धन्यवाद। यह ठीक वैसा ही काम करता है क्योंकि मैं मान्य मानों को संपादित करना चाहता हूं। लेकिन मुझे 'दस्तावेज़फिल्टर' के साथ विचार नहीं मिला। मैं इस तरह से बड़ी संख्या में प्रवेश करने की अनुमति कैसे दे सकता हूं? –

+0

@Stas: मैंने उत्तर में एक उदाहरण जोड़ा। –

5

..numbers रेंज में की अनुमति चाहिए 0..100

TableCellEditor के रूप में एक JSpinner का प्रयोग करें।

+0

धन्यवाद। लेकिन दुर्भाग्य से मुझे नहीं लगता कि यह मेरे मामले में उपयोगी होगा। यह पूर्णांक नहीं है और उपयोगकर्ता संख्या टाइप करके मैन्युअल रूप से इनपुट इनपुट करेंगे। –

+0

मैं वास्तव में उलझन में हूं, आपकी ब्लू टूपर्ल आंख से कहां है, बिना पक्ष के अच्छी सलाह के लिए +1 – mKorbel

+0

@ एमकोरबेल: "आपकी कहां से ब्लू टोपल आंख है" मैं उस छवि के बीमार पड़ रहा था। [टेक्स्ट क्लिपिंग] के साथ खेलने के बाद (http://stackoverflow.com/questions/6295084/cut-out-image-in-shape-of-text/6296381#6296381) दूसरे दिन, मैंने सोचा कि मैं कोशिश करता हूं और गठबंधन करता हूं कुछ अक्षरों को एक 'आकार' में। बाद में 'क्षेत्र' (और मिनट) के कुछ जोड़े, और मेरे पास नई छवि थी। (टिल्ट्स हेड) यकीन नहीं है कि मुझे यह पसंद है, फिर भी। ;) –

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