gpt4 book ai didi

java - KeyListener 在我的 JTextField 收到 "key-hit"之前接收到 ..?

转载 作者:搜寻专家 更新时间:2023-11-01 02:18:16 29 4
gpt4 key购买 nike

我有一个 JTextField,并且我在该字段中添加了一个 Keylistener。在 keyPressed 方法中,我要求该方法打印 (System.out.println) JTextField 中的内容。如果我打了一个字母,似乎 KeylistenerJTextField 更新之前收到了这个按键。我必须敲两个字母才能看到第一个。

我需要做的就是在输入每个字母时将它们设为大写。我试图通过听每个键来做到这一点(出于其他原因我也听 ENTER 键)然后做 textfield.setText(textfield.getText().toUpperCase());

最佳答案

使用 DocumentFilter更改输入的文本。

不是最漂亮的来源,也不是 100% 正确,只是展示它是如何工作的。 See the original here

((AbstractDocument)textField.getDocument()).setDocumentFilter(new UppercaseDocumentFilter());

class UppercaseDocumentFilter extends DocumentFilter {
public void insertString(DocumentFilter.FilterBypass fb, int offset,
String text, AttributeSet attr)
throws BadLocationException {

fb.insertString(offset, text.toUpperCase(), attr);
}

public void replace(DocumentFilter.FilterBypass fb, int offset, int length,
String text, AttributeSet attrs)
throws BadLocationException {

fb.replace(offset, length, text.toUpperCase(), attrs);
}
}

关于java - KeyListener 在我的 JTextField 收到 "key-hit"之前接收到 ..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2177833/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com