मेरे पास एक कोड है कि मुझे एमडीपी का वेबलॉग मिला है। sizefilter और संख्या फ़िल्टर। मैं एक टेक्स्टफील्ड को दो दस्तावेज़ फ़िल्टर के लिए अपना फ़िल्टर कैसे सेट करूं?टेक्स्टफील्ड को कैसे बनाएं 2 दस्तावेज़ फ़िल्टर
यहाँisthe numberfilter
import javax.swing.text.BadLocationException;
import javax.swing.text.AttributeSet;
import javax.swing.text.DocumentFilter;
public class IntFilter extends DocumentFilter {
public void insertString(DocumentFilter.FilterBypass fb, int offset,
String string, AttributeSet attr)
throws BadLocationException {
StringBuffer buffer = new StringBuffer(string);
for (int i = buffer.length() - 1; i >= 0; i--) {
char ch = buffer.charAt(i);
if (!Character.isDigit(ch)) {
buffer.deleteCharAt(i);
}
}
super.insertString(fb, offset, buffer.toString(), attr);
}
public void replace(DocumentFilter.FilterBypass fb,
int offset, int length, String string, AttributeSet attr) throws BadLocationException {
if (length > 0) fb.remove(offset, length);
insertString(fb, offset, string, attr);
}
}
इस कोड sizefilter
import java.awt.*;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
public class SizeFilter extends DocumentFilter {
private int maxCharacters;
public SizeFilter(int maxChars) {
maxCharacters = maxChars;
}
public void insertString(FilterBypass fb, int offs, String str, AttributeSet a)
throws BadLocationException {
if ((fb.getDocument().getLength() + str.length()) <= maxCharacters)
super.insertString(fb, offs, str, a);
else
Toolkit.getDefaultToolkit().beep();
}
public void replace(FilterBypass fb, int offs, int length, String str, AttributeSet a)
throws BadLocationException {
if ((fb.getDocument().getLength() + str.length()
- length) <= maxCharacters)
super.replace(fb, offs, length, str, a);
else
Toolkit.getDefaultToolkit().beep();
}
}
मैंने पहले कोड की कोशिश की और कुछ त्रुटियों के आयात को ठीक किया। और इस भाग में यह एक त्रुटि है: 'filter.replace (fb, offs, length, a);' यह त्रुटि है: ** विधि javax.swing.text में विधि को प्रतिस्थापित करें। दस्तावेज़फिल्टर लागू नहीं किया जा सकता दिए गए प्रकार आवश्यक: javax.swing.text.DocumentFilter.FilterBypass, int, int, java.lang.String, javax.swing.text.AttributeSet मिला: javax.swing.text.DocumentFilter.FilterBypass, int, int, javax.print.attribute.AttributeSet ** –
आपने गलत विशेषता एसईटी आयात की है। –
अब मैंने दो फ़िल्टरों को जोड़ दिया है, यह सिर्फ सही काम नहीं करता है, मुझे क्यों पता नहीं है। लेकिन यह किसी भी तरह से टेक्स्टफील्ड को केवल वर्णों तक सीमित करता है और सीमा से पहले मैं केवल संख्या टाइप कर सकता हूं –