2011-07-05 62 views
1

如何將clickHandler添加到gwt複選框,以便在複選框被選中時顯示一個列表框,當它未被選中時,列表框消失?GWT複選框隱藏/顯示部件

以下是我到目前爲止。當我檢查複選框時,列表出現,但是當我取消選中時,列表框不會消失。

VerticalPanel vPanel = new VerticalPanel(); 
ListBox list = new listBox(); 
list.setVisible(false); 
vPanel.add(list); 
..... 
..... 
checkBox.addClickHandler(new ClickHandler() 
{ 
    public void onClick(ClickEvent event) 
    { 
     boolean checked =((CheckBox) event.getSource()).isEnabled(); 
     if(checked==true) 
     { 
      list.addItem("a"); 
      list.addItem("b"); 
      list.addItem("c"); 
      list.setVisible(true); 
     } 
     else if(checked==false) 
     { 
      componentList.setVisible(false); 
     } 
    } 
}); 

非常感謝。

回答

1

啓用!=檢查! (使用isCheckedgetValue

否則,請與Bhat的代碼並建議。

2

更好的方法是做值改變處理程序。用戶甚至可以使用鍵盤來檢查複選框!

CheckBox c = new CheckBox(); 
c.addValueChangeHandler(new ValueChangeHandler<Boolean>() { 

    @Override 
    public void onValueChange(ValueChangeEvent<Boolean> event) { 
     componentList.setVisible(event.getValue()); 

    } 
}); 
} 

編輯 -

你應該在列表中添加以外的項目。並且,根據默認複選框值(已選中或未選中),在開始時將組件設置爲可見或隱藏在其自身之外。

+0

偉大的建議,但由於某種原因,您的解決方案給出錯誤,指出addValueChangeHandler不適用於文本框。我檢查了API,你的解決方案應該工作... – sap