如何从 JTextField 中的用户键盘输入中过滤非法/禁止的文件名字符?
我想过滤用户键盘输入中 JTextField 中的非法/禁止文件名字符。我已经在 JTextField 中设置了大写过滤器。
DocumentFilter dfilter = new UpcaseFilter();
JTextField codeTF = new JTextField();
((AbstractDocument) codeTF.getDocument()).setDocumentFilter(dfilter);
这是我用来将 JTextfield 中的小写字母更改为大写字母的过滤器。
class UpcaseFilter 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 attr) throws BadLocationException
{
fb.replace(offset, length, text.toUpperCase(), attr);
}
}
我该如何解决这个问题?
I want to filter user's keyboard input for illegal/forbidden filename characters in JTextField. I have already set uppercase filter in JTextField.
DocumentFilter dfilter = new UpcaseFilter();
JTextField codeTF = new JTextField();
((AbstractDocument) codeTF.getDocument()).setDocumentFilter(dfilter);
Here is filter that I use to change lowercase to uppercase in JTextfield.
class UpcaseFilter 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 attr) throws BadLocationException
{
fb.replace(offset, length, text.toUpperCase(), attr);
}
}
How to I solve this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
沿着这些思路:
Something along these lines:
使用
JFormattedTextField
- 参见此处 和此处Use
JFormattedTextField
- see here and here非常感谢您的回答。我决定使用Itay的答案来解决这个问题。这是我的解决方案。
这是 FileNameFilter,它阻止插入非法字符。这应该适用于 Unix、Windows 和 Mac OS。
JFormattedTextField 似乎也是一个很好的解决方案,但 Itay 的答案对我来说更简单。非常感谢!
Big thanks for answers. I decide to use Itay's answer to solve the problem. Here is my solution.
Here is FileNameFilter which block inserted illegal characters. This should work in Unix, Windows and Mac OS.
JFormattedTextField also seems to be a good solution, but Itay's answer was simpler for me. Thank you very much!
InputVerifier
很好地补充了JFormattedTextField
,如此处所示。InputVerifier
complementsJFormattedTextField
nicely, as seen here.