2016-10-17 1 views
0

Ich habe ein Textfeld, das ich als erforderliches Feld umschalten möchte oder nicht, basierend darauf, ob ein Kontrollkästchen aktiviert ist. Ich kann den ValueChangeEventListener nicht zum Spielen bringen. DieseToggle TextField erforderlich/nicht erforderlich, wenn das Kontrollkästchen aktiviert ist

ist das, was ich bisher:

private TextField myTextField = new TextField("Name"); 
myTextField.setRequired(true); 

private CheckBox myCheckBox; 
myCheckBox = createCheckBox(); 


private CheckBox createCheckbox() { 
    CheckBox checkBox = new CheckBox("My checkbox"); 
    checkBox.setImmediate(true); 
    checkBox.addValueChangeListener(new ValueChangeListener() { 
     @Override 
     public void valueChange(ValueChangeEvent event) { 
      toggleRequired(); 
     } 
    }); 
    return checkBox; 
} 


private void toggleRequired() { 
    if (myCheckBox.getValue() != true) { 
     myTextField.setRequired(false); 
    } else { 
     myTextField.setRequired(true) 
    } 
} 

Der valueChangeListener Weg zu gefeuert wird von true in false oft geht zurück auf true. Ich bin mir nicht sicher, was ich hier falsch mache, und würde mich über Hilfe freuen.

Vielen Dank

+0

Sollte nicht Ihre 'else' Zweig lesen' myTextField.setRequired (true); 'anstelle von' myCheckBox.setRequired (true) ''? Wahrscheinlich könnten Sie einfach 'myTextField.setRequired (myCheckBox.getValue());' schreiben, um es einfacher zu machen. – Morfic

+0

Danke, dass Sie darauf hingewiesen haben, es ist ein Tippfehler, ich werde die Frage bearbeiten! – Tkingovr

Antwort

0

Ok, ich habe es herausgefunden! Es war eine sehr einfache Lösung alles, was ich war ändern musste

checkBox.addValueChangeListener(new CheckBox.ValueChangeListener() {}); 

ich stattdessen einige der folgenden Eigenschaften Klasse wurde Referenzierung:

properties.ValueChangeListener(); 
Verwandte Themen