您可以DocumentFilter
为每个添加一个JTextField
来执行转换:
DocumentFilter hexFilter = new DocumentFilter(){
@Override
public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
super.replace(fb, offset, length, text, attrs);
String hexInput = hexTextField.getText();
//process hex input
}
};
((AbstractDocument) hexTextField.getDocument()).setDocumentFilter(hexFilter);
replace
每次用户在文本字段中插入文本时,都会调用该方法。
您只需从文本字段中获取输入并进行处理。
我遇到了这个问题,因为有 3 个文本字段,我不知道如何“检测”用户在哪个文本框中进行了输入。
您可以DocumentFilter
为每个文本字段添加不同的内容,因此您将始终知道用户正在写入哪个文本字段。
就像是:
((AbstractDocument) hexTextField.getDocument()).setDocumentFilter(hexFilter);
((AbstractDocument) octTextField.getDocument()).setDocumentFilter(octFilter);
((AbstractDocument) binTextField.getDocument()).setDocumentFilter(binFilter);
这样,您将始终知道binFilter
处理二进制输入、octFilter
处理八进制输入和hexFilter
处理十六进制输入。
另一种选择是使用 a KeyListener
,但是当您在文本字段中粘贴一些文本时,它不会做出反应。