[英]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.