[Resolvido] Propriedades componente personalizado netbeans + metodo qtde maxima de caracteres

Olá pessoal,

precisava de um textfield que mudasse a borda conforme o foco do campo. então fiz esse ai…

imports.... 

public class jc5textfield extends JTextField {

    public jc5textfield() {
        super();
        jc5txt.setBorder(BorderFactory.createLineBorder(Color.GRAY, 1));
    }
    
    private JTextField jc5txt = this;

    public void settamanhoMax(final int tamanho) {

        this.addKeyListener(new KeyListener() {
            public void keyTyped(KeyEvent arg0) {

                String texto = jc5txt.getText();
                if (texto.length() >= tamanho) {
                    jc5txt.setText(texto.substring(0, tamanho - 1));
                }
            }

            public void keyPressed(KeyEvent arg0) {
            }

            public void keyReleased(KeyEvent arg0) {
            }
        });
    }

    public void setBordaFoco(boolean teste) {
        if (teste) {
            this.addFocusListener(new FocusListener() {

                public void focusGained(FocusEvent arg0) {
                    jc5txt.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
                }

                public void focusLost(FocusEvent arg0) {
                    jc5txt.setBorder(BorderFactory.createLineBorder(Color.GRAY, 1));
                }
            });
        }
    }
}

1º - gostaria de colocar na Paleta do netbeans o meu textfield para o pessoal poder fazer o arasta-solta. até ai blz… agora como que eu falo pra IDE que o metodo X deve aparecer na coluna de Propriedades do Objeto?

2º - tem uma maneira mais eficiente de fazer o que o meu metodo settamanhoMax faz?

agradeço a todos a atenção…

1 - Contanto que a propriedade que você deseja expor através da janela Propriedades do Objeto seja exportada no estilo de Java Bean (i.e. através métodos getXXX() / setXXX()), não é necessário realizar nenhum procedimento específico - sua propriedade deverá aparecer automaticamente na janela Propriedades.

2 - Crie uma classe derivada de PlainDocument, onde esta classe derivada limitará a quantidade máxima de caracteres. No construtor do seu JTextField personalizado, chame JTextField.setDocument() passando a classe derivada de PlainDocument:

http://www.exampledepot.com/egs/javax.swing.text/LimitText.html

Completando:
a) O NetBeans exige que um componente que você queira pôr na palette:

  • Que tenha um construtor sem parâmetros (OK)
  • Que obedeça às convenções Javabeans (ou seja, os setters e getters têm de estar bem definidos. O nome do seu setter “settamanhomax” está errado, deveria ser “setTamanhoMax” - e isso irá gerar uma propriedade write-only “tamanhoMax”.

Obrigado roger_rf e thingol pelas respotas… agora esta funfando direitinho…