簡體   English   中英

是否可以通過標記從 Vaadin 的布局中獲取組件?

[英]Is it possible to get a component from layout in Vaadin by labeling it?

我有個問題。 是否可以通過使用特定名稱或其他名稱來標記 Vaadin 中的布局來獲取組件?

假設我們有這個代碼。

    NumberField totalSamples = new NumberField();
    totalSamples.setValue(0d);
    totalSamples.setEnabled(false);
    Label label = new Label("Total samples:");
    Button start = new Button("Start");
    row = new HorizontalLayout();
    row.add(start, label, totalSamples);
    layout.add(row);

如果我想從layout獲取label對象,首先需要獲取row對象,如果我不知道所有這些對象的索引。 有沒有辦法通過為它們設置特定的數字或名稱來獲取這些對象?

    Button start = layout.getComponentAt(index)

使用集合。

Vaadin 對象只是 Java 對象。 因此,當您實例化小部件時,請將它們添加到List或其他適合您需要的集合中。

您的集合可以存儲為外部布局類的成員變量。

在需要跟蹤動態創建的行的特定情況下,每個行都有三個小部件,請創建一個類。 該類應該擴展HorizontalLayout 該類將具有三個成員變量,每個成員變量都已命名,以便您以后可以單獨訪問它們。

class Row extends HorizontalLayout {

    NumberField totalSamples ;
    Label label ;
    Button start ;

    // Constructor
    public Row ( … ) {
        totalSamples = … ;
        label = … ;
        start = … ;
        this.add( label , totalSamples , start ) ;
    }

}

除了 Vaadin 小部件之外,您還可以向此Row類添加其他成員變量。 如果每一行代表貴公司生產的特定產品,請添加productId字段。 或者,您可能希望單獨跟蹤每一行以進行日志記錄、調試或審計跟蹤。 如果是,請向類添加UUID字段。

Row類可以嵌套在外部布局類中,因為您在應用程序的其他任何地方都不需要它。

在外部布局上,實例化、收集和放置行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM