我有很多GWT列表框的用戶表單。該表單就像一個具有名稱列表的excel表單。 這是醜陋的,箭頭髮生。如何以編程方式打開gwt listbox?
我想細胞就像在Excel中。箭頭僅在您單擊單元格時出現。
我開始計劃我自己的小工具有一個文本框,並嵌入到DeckPanel一個列表框,當你點擊文本框或當值變化的切換。但有了這個解決方案,有必要再次點擊打開列表框。現在
,這將是巨大的,如果當你點擊文本框,列表框將顯示已打開。
在下面的代碼,我嘗試做入法的onClick這個王氏這一行:
DomEvent.fireNativeEvent(event.getNativeEvent(), listBox);
但它有沒有影響。 有沒有人有解決方案?
public class CustomListBox extends Composite implements ClickHandler,
ChangeHandler, HasChangeHandlers {
private final StringListBox listBox;
private final TextBox textBox;
private final DeckPanel panel;
public CustomListBox() {
textBox = new TextBox();
textBox.addClickHandler(this);
textBox.setReadOnly(true);
listBox = new StringListBox();
listBox.addChangeHandler(this);
panel = new DeckPanel();
panel.add(textBox);
panel.add(listBox);
panel.showWidget(0);
// All composites must call initWidget() in their constructors.
initWidget(panel);
}
@Override
public void onClick(ClickEvent event) {
Object sender = event.getSource();
if (sender == textBox) {
panel.showWidget(1);
DomEvent.fireNativeEvent(event.getNativeEvent(), listBox);
}
}
public void addItem(String item) {
listBox.addItem(item);
}
public int getSelectedIndex() {
return listBox.getSelectedIndex();
}
public String getItemText(int selectedIndex) {
return listBox.getItemText(selectedIndex);
}
@Override
public HandlerRegistration addChangeHandler(ChangeHandler handler) {
return listBox.addChangeHandler(handler);
}
@Override
public void onChange(ChangeEvent event) {
Object sender = event.getSource();
if (sender == listBox) {
textBox.setText(getItemText(getSelectedIndex()));
panel.showWidget(0);
}
}
}
你有沒有解決這個問題?我有一個類似的設置,在這裏我們顯示的文本字段中的數據,然後切換到顯示列表框時,在文本框的用戶點擊編輯。它需要第二次點擊來打開列表框。我們也是ListBox的子類,但似乎還沒有一個乾淨的解決方案。 – user26270 2013-03-20 15:16:26