Jtextfield边界

mmr*_*txs -1 java swing border keylistener jtextfield

我创建了一个仅使用整数作为输入的格式化字段,如果键入任何字母,我将其边框设置为红色边框.现在我想设置默认边框,如果用户纠正错误.我该如何设置默认边框.

谢谢你的帮助

这是我的代码:

    if(!(Character.isDigit(evt.getKeyChar()))){
        evt.consume();
        Toolkit.getDefaultToolkit().beep();
        flatNoField_addUser.setBorder(BorderFactory.createLineBorder(Color.red));
    }
    else{
        ?????
    }
Run Code Online (Sandbox Code Playgroud)

Mad*_*mer 5

首先,看起来你正在使用a KeyListener来尝试和过滤文本字段,这是一个坏主意,可能导致许多问题和不一致.相反,你应该使用一个DocumentFilter,这是为了做到这一点.

您可以在开始之前存储对原始边框的引用...

Border border = flatNoField_addUser.getBorder();
Run Code Online (Sandbox Code Playgroud)

只需在需要时重新应用它.

更通用的解决方案是询问UIManger ......

Border border = UIManager.getBorder("TextField.border");
Run Code Online (Sandbox Code Playgroud)

这样做的问题是它没有考虑字段具有非默认边界的用例