为什么我的滑块编辑器在Vaadin 8网格中不起作用?

时间:2017-10-06 08:11:17

标签: java datagrid kotlin vaadin vaadin8

我想创建一个Vaadin 8网格,我可以使用滑块(类似于this example)编辑Amount (2)列中的值。

Grid

我使用以下代码创建网格。

fun createGrid(): Grid<Concept> {
    val grid = Grid<Concept>()
    val dataProvider = ListDataProvider<Concept>(ctl.getConcepts())
    grid.dataProvider = dataProvider
    grid.addColumn(Concept::getName)
            .setId("ID")
            .setCaption("ID")
    grid.addColumn(Concept::getDescription)
            .setId("desc")
            .setCaption("Description")
    grid.addColumn(Concept::getOutput)
            .setId("amountNumber")
            .setCaption("Amount")

    val conceptAmountditor = Slider()
    conceptAmountditor.setWidth(100.0f, Sizeable.Unit.PERCENTAGE)
    conceptAmountditor.min = 0.0
    conceptAmountditor.max = 100.0

    grid.addColumn(Concept::getOutput, ProgressBarRenderer())
            .setId("amountBar")
            .setCaption("Amount (2)")
            .setEditorComponent(
                    conceptAmountditor,
                    Concept::setOutput
            )
            .setEditable(true)


    grid.setSizeFull()
    return grid
}

但是当我点击各行时,不会出现任何滑块。

我的代码出了什么问题?当我双击特定行时,如何将进度条转换为滑块?

1 个答案:

答案 0 :(得分:1)

这有效:

    val amount2Col = grid.addColumn(Concept::getOutput, amount2ColRenderer)
            .setId("amountBar")
            .setCaption("Amount (2)")
    val binder = grid.editor.binder
    val amount2ColSlider = Slider()
    val amount2Binding: Binder.Binding<Concept, Double> = binder.bind(
            amount2ColSlider, Concept::getOutput, Concept::setOutput
    )
    amount2Col.setEditorBinding(amount2Binding)
    amount2Col.setEditable(true)
    grid.editor.setEnabled(true)

有关详细信息,请参阅this page上的“在网格内编辑项目”部分。