java - 删除添加的按钮 Vaadin
问题描述
我有一个按钮。对于用户在文本字段中设置的每个数字,适当数量的按钮会添加到 ui。但是对于数字的每一次更改,我都希望删除所有 buttonAdded,但不是第一个,它已经到位。我怎么做?当我在示例中尝试它时它不起作用:
final int number = Integer.parseInt(this.textField.getValue());
if(number > 1) {
for(int i = 1; i < number; i++) {
final XdevButton buttonAdded = new XdevButton("Button " + i);
this.verticalLayout.removeComponent(buttonAdded);
this.verticalLayout.addComponent(buttonAdded);
}
}
有没有办法在我的循环中创建具有已定义组件名称的新按钮?像这样的东西:XdevButton button + i = new XdevButton()
?
编辑:(用列表尝试过) - 不起作用。
private void textField_valueChange(final Property.ValueChangeEvent event) {
final int number = Integer.parseInt(this.textField.getValue());
final List<XdevButton> addedButtons = new LinkedList<>();
for(final XdevButton btn : addedButtons) {
this.verticalLayout.removeComponent(btn);
}
addedButtons.clear();
if(number > 1) {
for(int i = 1; i < number; i++) {
final XdevButton buttonAdded = new XdevButton("Button " + i);
addedButtons.add(buttonAdded);
for(final XdevButton btn : addedButtons) {
this.verticalLayout.addComponent(btn);
}
}
}
}
我错过了什么?
解决方案
我将为要删除/添加的按钮创建一个单独的布局支架并使用它。出于测试目的,我已将您替换XdevButton
为通用 Vaadin Button
类。这似乎根据您的规格工作:
@Route("customView")
public class CustomView extends VerticalLayout {
VerticalLayout buttonHolder=new VerticalLayout();
public CustomView (){
TextField tf=new TextField("Enter amount of buttons");
tf.addValueChangeListener(event->{
final int number = Integer.parseInt(event.getValue());
if(number > 1) {
buttonHolder.removeAll();
for(int i = 0; i < number; i++) {
final Button buttonAdded = new Button("Button " + i);
buttonHolder.add(buttonAdded);
}
}
});
Button alwaysInPlace=new Button("This button is never removed");
add(alwaysInPlace);
add(buttonHolder);
}
}
示例在 V14 中创建,但在所有其他版本中应类似
推荐阅读
- python - 如何在火花流作业中查找数据帧的大小
- mongodb - 使用正则表达式在 Mongo 中查找和替换
- java - 有没有办法唯一识别BLE设备?
- c# - 如何在 C# MVC 中使用 Web API Get 方法
- sql - PostgreSQL,当没有可用的 ORDER BY 选项时反转递归查询
- c - 如何包含 linux_dirent64 结构使用的 s64 和 u64 类型?
- sql-server - 我可以将时间戳转换成什么?
- netbeans-8 - 我是 mysql 与 netbeans 连接的初学者
- hadoop - 与 hive 中的外部表混淆
- c# - 在 .Net Core 中添加 System.Windows.forms 的引用