在vaadin表中创建文本字段,并在按钮单击时在容器中获取它们的值

时间:2018-02-24 08:59:07

标签: java-ee vaadin vaadin7

我是vaadin的新手。我想创建一个包含4列和N行的表,表格单元格包含文本字段,表格外面会有两个按钮,按钮点击第1个按钮会将更多行添加到表格中,然后点击在第二个按钮中,应将所有文本字段中的值添加到某个容器中。 我自己尝试使用Table.addGeneratedColumn("columnName", new ColumnGenerator() {});并在其中创建一个TextField,但它没有显示在表中。另外,我也不知道如何为每个表行分配唯一的ID。 我已经知道使用BeanItemContainer将数据填充到vaadin表,但我不知道如何创建一个具有空TextFields的表,并且在按钮单击时我使用用户在字段中输入的值加载容器。 提前谢谢。

1 个答案:

答案 0 :(得分:-1)

在朋友的帮助和一些搜索中,我已按以下方式完成: -

public class MyTableClass extends VerticalLayout implements View, ValueChangeListener, ClickListener{
private Table myTable = new Table();
private  Button btnAddRow = null;
private  Button btnSave = null;
private  int rowIdsCount = 0;
private TextField txtf1 = new TextField();  
private TextField txtf2 = new TextField();  
private TextField txtf3 = new TextField();  
private TextField txtf4 = new TextField();

private Table createTable()
{
    myTable.addContainerProperty("TextField1", TextField.class, null);
    myTable.addContainerProperty("TextField2",  TextField.class, null);
    myTable.addContainerProperty("TextField3",  TextField.class, null);
    myTable.addContainerProperty("TextField4",  TextField.class, null);

    MyTableClass obj = new MyTableClass();
    myTable.addItem(new Object[] { obj.txtf1, obj.txtf2, obj.txtf3, obj.txtf4 },
                    ++rowIdsCount);

    return myTable;

}                   
    private Table addRow() {
    MyTableClass obj = new MyTableClass();
    myTable.addItem(new Object[]{obj.txtf1,obj.txtf2,obj.txtf3,obj.txtf4}, ++rowIdsCount);
    return myTable;
}

public void buttonClick(ClickEvent event) {
        if (btnAddRow.equals(event.getButton())) {
                this.addRow();
        } 

        else if(btnSave.equals(event.getButton())){

        for (int i = 1; i <= this.rowIdsCount; i++) {
            String txtf1Val = myTable.getItem(i).getItemProperty("TextField1").getValue().toString().trim();
            String txtf2Val = myTable.getItem(i).getItemProperty("TextField2").getValue().toString().trim();
            String txtf3Val = myTable.getItem(i).getItemProperty("TextField3").getValue().toString().trim();
            String txtf4Val = myTable.getItem(i).getItemProperty("TextField4").getValue().toString().trim();
            }
        }
}