Jtextfield边界

时间:2014-03-25 20:27:47

标签: java swing border jtextfield keylistener

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

感谢您的帮助

这是我的代码:

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

2 个答案:

答案 0 :(得分:5)

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

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

Border border = flatNoField_addUser.getBorder();

只需在需要时重新申请。

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

Border border = UIManager.getBorder("TextField.border");

问题在于它没有考虑字段具有非默认边框的用例

答案 1 :(得分:0)

您可以使用以下方式将原始边框设为JTextField

flatNoField_addUser.setBorder(UIManager.getBorder("TextField.border"));