如何在 jTextField 中只输入字符? [英] how can i type only characters in jTextField?
本文介绍了如何在 jTextField 中只输入字符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我只需要在 java 中的文本字段区域中键入字符.我通过更改为各种类型尝试了以下代码.
I need to type only characters in the text field area in java. I tried below codes by changing to various types.
char a= evt.getKeyChar();
if(!(a>='0'&&a<='9')){
evt.consume();
}
推荐答案
尝试使用 DocumentFilter,并将其附加到 JTextField
的 Document
.
Try to use DocumentFilter, and attach that to the Document
of the JTextField
.
这是一个相同的小例子,寻求帮助:
Here is a small example for the same, for help:
package to.uk.gagandeepbali.examples;
import javax.swing.*;
import javax.swing.text.AbstractDocument;
import java.awt.*;
/**
* Created by Gagandeep Bali on 7/12/2014.
*/
public class FilterCharacters {
private void displayGUI() {
JFrame frame = new JFrame("Filtering Text Example");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel contentPane = new JPanel();
JTextField tField = new JTextField(10);
((AbstractDocument)tField.getDocument()).setDocumentFilter(new MyDocumentFilter());
contentPane.add(tField);
frame.setContentPane(contentPane);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
Runnable runnable = new Runnable() {
@Override
public void run() {
new FilterCharacters().displayGUI();
}
};
EventQueue.invokeLater(runnable);
}
}
MyDocumentFilter.java
package to.uk.gagandeepbali.examples;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
import java.awt.*;
/**
* Created by Gagandeep Bali on 7/12/2014.
*/
public class MyDocumentFilter extends DocumentFilter {
@Override
public void insertString(DocumentFilter.FilterBypass fp, int offset,
String stringToFilter, AttributeSet aset)
throws BadLocationException {
int len = stringToFilter.length();
if (Character.isLetter(stringToFilter.charAt(len - 1)))
super.insertString(fp, offset, stringToFilter, aset);
else
Toolkit.getDefaultToolkit().beep();
}
@Override
public void replace(DocumentFilter.FilterBypass fp, int offset, int length,
String stringToFilter, AttributeSet aset)
throws BadLocationException {
int len = stringToFilter.length();
if (Character.isLetter(stringToFilter.charAt(len - 1)))
super.replace(fp, offset, length, stringToFilter, aset);
else
Toolkit.getDefaultToolkit().beep();
}
}
这篇关于如何在 jTextField 中只输入字符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文