Events 使用vaadin捕获表中textfield上的值更改事件
请支持我下面的问题 我有一个对话框,其中包含一个表和其他组件。该表具有多行和多列。列包含由用户输入数据的文本字段 但是,源代码是由其他一些层构建的,如下所示:Events 使用vaadin捕获表中textfield上的值更改事件,events,listener,vaadin,Events,Listener,Vaadin,请支持我下面的问题 我有一个对话框,其中包含一个表和其他组件。该表具有多行和多列。列包含由用户输入数据的文本字段 但是,源代码是由其他一些层构建的,如下所示: 对话框组件是由DialogA类构建的 Table组件由TableB类构建 TableB调用generator类GeneratorC,生成此表的列、行和文本字段 如果我停留在GeneratorC中,我可以在表B中的文本字段上添加侦听器并捕获事件,但我停留在DialogA中,我无法捕获该文本字段上的值更改事件。虽然我在TableB上添加了监听
TableB.addListener(new Property.ValueChangeListener()
{
private static final long serialVersionUID =
1L;
@Override
public void valueChange(
ValueChangeEvent event)
{
String temp = (String)event.getProperty().getValue();
}
});
我期待着您的回答。应该将侦听器添加到您在ColumnGenerator中添加的文本字段中,而不是添加到表本身:
private class TextFieldColumnGenerator implements Table.ColumnGenerator {
private TextField tf;
@Override
public Component generateCell(final Table source, final Object itemId,
final Object columnId) {
Item item = source.getItem(itemId);
tf.addListener(new FieldEvents.TextChangeListener() {
@Override
public void textChange(TextChangeEvent event) {
doSomething(event.getText());
}
});
return tf;
}
我认为这应该是正确的,我在IDE之外编写了它,因此可能会有一些错误。您的答案不完整。请您解释一下
TextFieldColumnGenerator
将在哪里使用好吗?@TantaouiElMehdi抱歉,这是两年前的事了。我不知道它是怎么用的。