एक 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
विधि से लौटा दिया जाएगा।
स्रोत
2011-06-12 12:48:50
सबसे पहले आप समझा सकते हैं कि "डबल संपादक" क्या है? –
@ होवरक्राफ्ट फुल ऑफ़ ईल्स, यह 'टेबलसेल एडिटर' है जो jtable के सेल्स –
में इनपुट युगल की अनुमति देता है। दिलचस्प सवाल, धन्यवाद। –