Domanda

I created a formattedfield which takes only integer as input and i set its border to be a red line border if any alphabet is typed. Now i want to set default border if user corrects the error. how can i set default border.

Thanks For Your Help

This is my code :

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

Soluzione

First of all, it would look like you are using a KeyListener to try and filter a text field, this is a bad idea and can lead to many issues and inconsistencies. Instead you should be using a DocumentFilter, which is designed to do just this.

You could store a reference to the original border before your start...

Border border = flatNoField_addUser.getBorder();

And simply reapply it when you need to.

A more generic solution would be to ask the UIManger...

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

The problem with this is it does not take into consideration the use case where the field had a non-default border

Altri suggerimenti

You can get the original border to the JTextField by using by:

flatNoField_addUser.setBorder(UIManager.getBorder("TextField.border"));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top