Bound properties em java beans

2 respostas
J
Olá, pessoal. Estou lendo o trail sobre java beans no "Java Tutorial", e tentando fazer um bean com uma bound property. O meu bean (codigo abaixo) funciona, quando mudo a propriedade "nome" o label muda normalmente, mas ao ligar o meu bean ao bean ChangeReporter dos exemplos da beanbox, seguindo exatamente as instruções do tutorial, o ChangeReporter parece não "notar" que houve um evento PropertyChangeEvent (apesar de reportar normalmente mudanças nas propriedades herdadas como background, font, etc...) Alguém tem idéia do que está acontecendo?
public class MeuSegundoBean extends JPanel implements Serializable
{
    
    PropertyChangeSupport gerenteDeMudancas = new PropertyChangeSupport(this);
    private JLabel nome = new JLabel("inicial");//exemplo de uma propriedade "bound"
    
    public String getNome()
    {
        return nome.getText();
    }
    
    public void setNome(String novo)
    {
        String velho = nome.getText();
        nome.setText(novo);
        
        gerenteDeMudancas.firePropertyChange(
            new PropertyChangeEvent(this, "nome", velho, novo));
    }
    
    public MeuSegundoBean()
    {
        setSize(100,30);
        setBackground(Color.blue);
        add(nome);
    }  
    
    //gerenciamento dos listeners de nome
    public void addPropertyChangeListener(PropertyChangeListener pcl){

        gerenteDeMudancas.addPropertyChangeListener(pcl);
    }
    
    public void removePropertyChangeListener(PropertyChangeListener pcl)
    {
        gerenteDeMudancas.removePropertyChangeListener(pcl);
    }   
    
}

brigadim

2 Respostas

danieldestro

Sua classe MeuSegundoBean não deveria implementar alguma interface relativa às notificações de mudança de estados?

J

Não, quem implementa PropertyChangeListener (PCL)é o bean que “ouve” os eventos. Na beanbox, é feita uma classe hook-up (adaptadora) que implementa a PCL chamando internamente um método escolhido desse bean “ouvidor” na hora do projeto.

A bean box é meio doidona, no dia seguinte o código funcionou…
Obrigada, :wink:

Criado 4 de fevereiro de 2005
Ultima resposta 11 de fev. de 2005
Respostas 2
Participantes 2