clickEventが発生したgwt VerticalPanelからウィジェットを取得する方法が至急知りたいです。1 つ以上のサブウィジェット ( FlexTables ) を持つ verticalPanel があります。FlexTable.getCellForEvent(event).getRowIndex(); を使用したい 方法。そのため、まず、VerticalPanel から FlexTable ウィジェットを取得する必要があります。この VerticalPanel に addClickHandler または DomHandler を追加したいのですが、ユーザーがクリックしたときに、ユーザーがクリックした FlexTable ウィジェットを取得したいと考えています。しかし、verticalPanel を反復処理して、各 FlexTable ウィジェットに ClickHandler を追加したくありません。それらを開発する方法は?任意の提案をいただければ幸いです。私の質問に注意していただきありがとうございます..
質問する
628 次
2 に答える
1
あなたはそれを得ることができますClickEvent event
public void onClick(final ClickEvent event) {
VerticalPanel vp = (VerticalPanel) event.getSource();
Iterator<Widget> vp = verP.iterator();
while (vPanelWidgets.hasNext()){
Widget childWidget = vPanelWidgets.next();
if (childWidget instanceof FlexTable) {
...do stuff with childWidget
}
}
}
于 2013-06-01T06:53:21.290 に答える
1
本当に私のページには、VerticalPanel に埋め込まれた FlexTables のリストが表示されます。これらの flexTables は動的に挿入され、最初の列にチェックボックスがあります。私の問題は、ユーザーが任意のテーブルをクリックし、その行にチェックボックスを設定して選択したい場合です。ユーザーがもう一度クリックすると、その行のチェックボックスがオフになります。ここに私のコード.....
view.getResultPanel().addDomHandler(new ClickHandler() {
public void onClick(final ClickEvent event) {
VerticalPanel vpanel = (VerticalPanel) event.getSource();
for (int i = 0; i < vpanel.getWidgetCount(); i++) {
Widget childWidget = vpanel.getWidget(i);
if (childWidget instanceof FlexTable) {
FlexTable table = (FlexTable) childWidget;
if (table.getCellForEvent(event) != null) { // that will avoid invalid table (that not clicked )
int currentRowIndex = table.getCellForEvent(event).getRowIndex();
Element elem = table.getCellFormatter().getElement(currentRowIndex, 0);
if ("td".equalsIgnoreCase(elem.getTagName())) {
elem = elem.getFirstChildElement();
}
if ("center".equalsIgnoreCase(elem.getTagName())) {
elem = elem.getFirstChildElement();
}
boolean isChecked = false;
if ("".equalsIgnoreCase(elem.getAttribute("checked"))) {
elem.setAttribute("checked", "on");
isChecked = true;
}
else if ("on".equalsIgnoreCase(elem.getAttribute("checked"))) {
elem.removeAttribute("checked");
}
if (isChecked) {
// Do Something
}
}
}
}
}
}, ClickEvent.getType());
UIビューで...私はこのチェックボックスをそのように作成します..
flxResultTable.setHTML(0, 0, "<center><input type = 'checkbox'/></center>");
于 2013-06-01T09:04:01.060 に答える