0
我學習的GWT框架,我想創建一個自定義窗口小部件:這個小部件是操作的菜單中包含一個按鈕。GWT部件:2個不同的clickhandlers
如果你點擊三角形的區域我想要一個帶有一些選項(可能的操作)的菜單,如果我點擊按鈕的其他部分,我希望操作是第一個從列表中。 我已經把一個ListBox小部件放在Button小部件中,我想要2個不同的clickListener。問題是按鈕內的列表框的監聽器不工作。 你知道爲什麼嗎?
繼碼
公共類MyClass的擴展複合{
private ListBox options;
private Button saveButton;
private HorizontalPanel savePanel;
private int indexHandler;
public MyClass(String label, List<String> operationList, final List<Command> commandList) {
savePanel = new HorizontalPanel();
initWidget(savePanel);
options = new ListBox();
saveButton = new Button(label);
for(String operation : operationList){
options.addItem(operation);
}
options.sinkEvents(Event.ONCLICK);
options.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
System.out.println("Test1");
indexHandler = options.getSelectedIndex();
commandList.get(indexHandler).execute();
options.setItemSelected(0, true);
}
});
saveButton.getElement().appendChild(options.getElement());
saveButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
System.out.println("Test2");
commandList.get(0).execute();
options.setItemSelected(0, true);
}
});
savePanel.add(saveButton);
}
}
嗨安德烈,感謝您的回覆。我已經嘗試了changeHandler而不是clickHandler,但沒有執行(我甚至在調試模式下試過)。這樣看來,分配給內部小部件的所有處理程序都被刪除(或可能被覆蓋)。 我試圖並排添加小部件,但很難達到我想要的效果。 – Agosteeno
當您執行.getElement()。appeandChild()時,您的處理程序會消失。您不需要並排添加小部件,您可以添加小部件,因此只能看到一個按鈕。使用CSS或面板來達到這個效果。 –
謝謝安德烈。 – Agosteeno