我在我的應用程序中有幾個jtextfield,我想把其中一個允許大寫和小寫,並且可以引入到jtextfield的字符數量的限制。我必須把班級分開,一個放上限制,另一個放上限或小寫。在同一時間設置jtextfield文本限制和大寫
代碼JTextField的極限:
package tester;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
public class TextLimiter extends PlainDocument {
private Integer limit;
public TextLimiter(Integer limit) {
super();
this.limit = limit;
}
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
if (str == null) {
return;
}
if (limit == null || limit < 1 || ((getLength() + str.length()) <= limit)) {
super.insertString(offs, str, a);
} else if ((getLength() + str.length()) > limit) {
String insertsub = str.substring(0, (limit - getLength()));
super.insertString(offs, insertsub, a);
}
}
}
,這裏是設置大寫或反之亦然代碼:
package classes;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
public class upperCASEJTEXTFIELD extends DocumentFilter {
@Override
public void insertString(DocumentFilter.FilterBypass fb, int offset, String text,
AttributeSet attr) throws BadLocationException {
fb.insertString(offset, text.toUpperCase(), attr);
}
@Override
public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text,
AttributeSet attrs) throws BadLocationException {
fb.replace(offset, length, text.toUpperCase(), attrs);
}
}
恢復我的問題,我想設置一個JTextField上限= 11和大寫。
你會考慮使用'regex'嗎? – Smit 2013-03-26 16:13:31
請勿擴展文檔。僅使用DocumentFilter。 – camickr 2013-03-26 16:38:01