如果我在jtextfield
中给出字母值而不使用大写锁定或 shift 键,则应该给出大写字母值。我不知道如何克服这个问题。给我一个代码来解决这个问题。
答案 0 :(得分:6)
通过扩展模型并更改提供的默认模型,可以轻松创建自定义字段。例如,以下代码段将创建仅包含大写字符的字段。即使从剪贴板粘贴文本或通过程序更改更改文本,它也会起作用。
public class UpperCaseField extends JTextField {
public UpperCaseField(int cols) {
super(cols);
}
protected Document createDefaultModel() {
return new UpperCaseDocument();
}
static class UpperCaseDocument extends PlainDocument {
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if (str == null) {
return;
}
char[] upper = str.toCharArray();
for (int i = 0; i < upper.length; i++) {
upper[i] = Character.toUpperCase(upper[i]);
}
super.insertString(offs, new String(upper), a);
}
}
}
礼貌:JTextField
答案 1 :(得分:3)
定义DocumentFilter
并分配给JTextFiled
的{{1}}或仅扩展Document
中使用的PlainDocument
并覆盖JTextField
方法。将String参数转换为uppser case并传递给insertString()
答案 2 :(得分:0)
您可以处理文本字段的on key up事件并将文本重置为toUpperCase。
textField.setText(textField.getText().toUpperCase());
这里显示了更好的方法
http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/JTextField.html
答案 3 :(得分:-1)
尝试
jtextfield.addKeyListener(new KeyAdapter(){
keyReleased(KeyEvent e) {
jtextfield.setText(jtextfield.getText().toUpperCase());
}
});