Wie kann man in Vaadin einer Zeile mit ThemeResource einen ClickEventListener geben?

pkm

Bekanntes Mitglied
Ich habe eine ein Vaadingrid, das ich wie folgt zusammenbaue:

Java:
 //Reihenfolge...

@SuppressWarnings({ "unchecked", "rawtypes" })

private void createTable() {

mybatisRead read = new mybatisRead();

res = read.go("table_contacts");

Grid<Row> grid = new Grid<>();

DataSet dataSet = generateDataSet();

grid.removeAllColumns();

//Reihenfolge...

grid.addColumn(row -> row.getValue("NAME")).setCaption("NAME");

grid.addColumn(row -> row.getValue("PHONE")).setCaption("PHONE");

grid.addColumn(row -> row.getValue("EMAIL")).setCaption("EMAIL");

grid.addColumn(row -> row.getValue("icon_delete"), new ImageRenderer()).setCaption("");

grid.addItemClickListener(e -> {

System.out.println(e.getColumn());

});

grid.setItems(dataSet.getRows());

addComponents(grid);

}




Die Rows baue ich mir wie folgt zusammen:

Java:
 List<Row> rows = new ArrayList<>();

 

 int numberOfRows = res.get("NAMES").length;

 

 for (int i = 0; i < numberOfRows; i++) {

 Row row = new Row();

 for (ColumnDBReader generator : generators) {

 row.setValue(generator.name(), generator.fetch(i));

 

 }

 

 

 //Icons

 row.setValue("icon_delete", new ThemeResource("images/delete.png"));

 

 rows.add(row);


Hier meine Klasse Row:

Java:
    public class Row {
        private Map<String, Object> values = new HashMap<>();

        public Object getValue(String column) {
            return values.get(column);
        }

        public void setValue(String column, Object value) {
            values.put(column, value);
        }
    }

Das Grid wird sehr schln dargstellt, und das Mülleimerbild auch, aber ich kann auf jede Spalte der dargestellte(n) Zeilen klicken - überall wird System.out.println(e.getColumn()); ausgeführt, nur dann nicht, wen ich auf das (Mülleimer)Icon klicke.

Ich verstehe nicht, woran das liegt.
 

Neue Themen


Zurück
Oben