I have the following part of the code:
public class ControlaEstat implements VetoableChangeListener{
private String [] valors = {"A punt","Avariat","Ocupat"}; // estats permesos
/**
* Llenca una excepcio si el canvi demanat vol assignar com estat un valor
* diferent dels anteriors ('A punt', 'Avariat' o 'Ocupat')
* @param evt esdeveniment amb informacio sobre el canvi que es demana
* @throws PropertyVetoException excepcio que indica que el nou valor no es correcte
*/
@Override
public void vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException {
// TODO cal implementar el metode
String nouValor=evt.getPropertyName();
if(!nouValor.equalsIgnoreCase(valors.toString())){
throw new PropertyVetoException("Incorrecte", evt);
}
}
}
But it does not work for me and I do not know how to do it. That is, I have to control that the text that is put on the panel is one of the values if it is not so then the error throws out new PropertyVetoException ("Incorrect", evt);
What can I be doing wrong?
I add the status class.
public class Estat {
// com es veu al codi dels metodes, s'han d'anomenar vcs i pcs
private final VetoableChangeSupport vcs = new VetoableChangeSupport(this);
private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
private String estat;
/**
* obte una cadena amb l'estat del servei
* @return
*/
public String getEstat(){
return estat;
}
/**
* assigna una cadena a l'estat del servei
* @param estat cadena a assignar com a nou estat
* @throws PropertyVetoException en cas que l'estat no sigui correcte
*/
public void setEstat(String estat) throws PropertyVetoException{
String oldEstat=this.estat;
vcs.fireVetoableChange("Estat.estat", oldEstat, estat);
this.estat=estat;
pcs.firePropertyChange("Estat.estat", oldEstat, estat);
}
// Com es veu al codi de la classe Pantalla, s'han d'anomenar
// addPropertyChangeListener i addVetoableChangeListener
public void addVetoableChangeListener(VetoableChangeListener listener){
this.vcs.addVetoableChangeListener(listener);
}
public void addPropertyChangeListener(PropertyChangeListener listener){
this.pcs.addPropertyChangeListener(listener);
}
}
The error is that it does not matter what I put that this always jumps me:
private void jTextFieldNouEstatActionPerformed(java.awt.event.ActionEvent evt) {
try {
estat.setEstat(jTextFieldNouEstat.getText());
jTextFieldEstatActual.setText(estat.getEstat());
jTextFieldNouEstat.setText("");
jTextAreaHistoric.setText(enregistra.toString());
jTextAreaHistoric.setRows(jTextAreaHistoric.getRows()+1);
} catch (PropertyVetoException ex) {
JOptionPane.showMessageDialog(this, "Nou estat erroni", "Avis", JOptionPane.WARNING_MESSAGE);
}