Java Jtextfield边界
我创建了一个formattedfield,它只接受整数作为输入,如果键入任何字母,我将其边框设置为红线边框。 现在,如果用户更正了错误,我想设置默认边框。 如何设置默认边框 谢谢你的帮助 这是我的代码:Java Jtextfield边界,java,swing,border,jtextfield,keylistener,Java,Swing,Border,Jtextfield,Keylistener,我创建了一个formattedfield,它只接受整数作为输入,如果键入任何字母,我将其边框设置为红线边框。 现在,如果用户更正了错误,我想设置默认边框。 如何设置默认边框 谢谢你的帮助 这是我的代码: if(!(Character.isDigit(evt.getKeyChar()))){ evt.consume(); Toolkit.getDefaultToolkit().beep(); flatNoField_addUser.setBo
if(!(Character.isDigit(evt.getKeyChar()))){
evt.consume();
Toolkit.getDefaultToolkit().beep();
flatNoField_addUser.setBorder(BorderFactory.createLineBorder(Color.red));
}
else{
?????
}
首先,看起来您正在使用
KeyListener
尝试过滤文本字段,这是一个坏主意,可能会导致许多问题和不一致。相反,您应该使用一个,它就是为了实现这一点而设计的
您可以在开始之前存储对原始边框的引用
Border border = flatNoField_addUser.getBorder();
只要在需要的时候重新使用即可
一个更通用的解决方案是询问UIManger
Border border = UIManager.getBorder("TextField.border");
这样做的问题是,它没有考虑到字段具有非默认边框的用例。您可以通过以下方式将原始边框获取到
JTextField
:
flatNoField_addUser.setBorder(UIManager.getBorder("TextField.border"));