我需要获取用户点击的行号来处理我的数据库操作。
try {
for (int i = 1; i < dbManager.getLastTopicId() + 1; i++) {
Integer itemId = new Integer(i);
String topicTitle = dbManager.getTitle(Integer.toString(i));
String topicText = dbManager.getText(Integer.toString(i));
String topicAuthor = dbManager.getAuthor(Integer.toString(i));
topicList.addItem(new Object[] {topicTitle, topicText, topicAuthor},
itemId);
}
} catch (UnsupportedOperationException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
这里我将数据加载到topicList表。
我也用topicList.addValueChangeListener(new Property.ValueChangeListener() {
public void valueChange(ValueChangeEvent event)
要处理用户,请单击。但是我需要从那个Listener获取,用户点击了哪个行号。我已经尝试了topicList.getValue()
和东西,但是没有他们返回我的行号。
感谢
答案 0 :(得分:5)
您可以通过添加ValueChangeListener
或ItemClickListener
来获取您的行ID。
注意:ItemClickListener不会响应键盘向上箭头或向下箭头,只有ValueChangeListener会响应。
使用EventObject,您可以访问项目ID。
Table table = new Table();
table.setImmediate(true);
table.setSelectable(true);
table.addListener(new ValueChangeListener() { // With ValueChangeListener respons to keyboard input as well
public void valueChange(ValueChangeEvent event) {
getMainWindow().showNotification("ValueChange: ItemId: " + event.getProperty().getValue());
}
});
table.addListener(new ItemClickListener() { // With ItemClickListener
public void itemClick(ItemClickEvent event) {
getMainWindow().showNotification("ItemClick: ItemId" + event.getItemId());
}
});
在Vaadin7中,方法名称已更改为:
table.addValueChangeListener();
table.addItemClickListener();
答案 1 :(得分:1)
如果您只想跟踪点击次数,可以使用addItemClickListener()向表格添加ItemClickListener
。见answer。
如果您想阅读表的值,也许使用多选,您可以使用ValueChangeListener
,并使用getValue()