Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jtextfield边界_Java_Swing_Border_Jtextfield_Keylistener - Fatal编程技术网

Java Jtextfield边界

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

我创建了一个formattedfield,它只接受整数作为输入,如果键入任何字母,我将其边框设置为红线边框。 现在,如果用户更正了错误,我想设置默认边框。 如何设置默认边框

谢谢你的帮助

这是我的代码:

    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"));