我有JTextField
。当用户输入a
或j
时,我希望文本字段中的文本为大写(例如,输入“ab”,输出“AB”)。如果第一个字母不是以下之一,
a
,t
,j
,q
,k
,2
,3
,...,{ {1}} 我不希望文本字段显示任何内容。
这就是我所拥有的,
9
答案 0 :(得分:5)
您可以覆盖insertString
类的方法Document
。看一个例子:
JTextField tf;
public T() {
tf = new JTextField();
JFrame f = new JFrame();
f.add(tf);
f.pack();
f.setVisible(true);
PlainDocument d = new PlainDocument() {
@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
String upStr = str.toUpperCase();
if (getLength() == 0) {
char c = upStr.charAt(0);
if (c == 'A' || c == 'T' || c == 'J' || c == 'Q' || c == 'K' || (c >= '2' && c <= '9')) {
super.insertString(offs, upStr, a);
}
}
}
};
tf.setDocument(d);
}
答案 1 :(得分:4)
如果第一个字母不是“a”/“A”或“t”/“T”或“j”/“J”或“q”/“Q”或“k”/“ K“,或任何”2“,”3“,......,”9“我希望文本字段不显示任何内容。
这是DocumentFilter Pattern的工作,example
答案 2 :(得分:2)
使用JFormattedTextField
课程。有关详细信息,请参阅How to Use Formatted Text Fields。