【发布时间】:2021-08-26 19:29:23
【问题描述】:
我正在用 Codenameone 编写一个程序,该程序将从 url 中提取一系列产品并将它们显示在列表中。我想在每次按下按钮时重新加载页面,因此我编写了一个名为 reload 的方法,该方法应该删除表单中的所有内容,然后将其全部替换为新拉出的列表。
public void reload(Form list){
list.removeAll();
list.repaint();
list.add(lpanelf);
pull();
for(int i=0; i<(products.size());i++){
System.out.println(products.get(i));
}
for(int i = 0; i<(products.size()/2);i++){
list.add(createWidget(products.get(i*2),products.get(i*2+1),i));
}
list.addComponent(lpanelb);
}
而createWidget是:
public SwipeableContainer createWidget(String product, String amount,int i) {
MultiButton button = new MultiButton(product);
Button buttonb = new Button("DELETE");
deleteb.add(button);
slide.add(buttonb);
button.setLayout(new GridLayout(1,2));
button.add(amount);
return new SwipeableContainer(slide.get(i),deleteb.get(i));
}
第一次重新加载后,它会抛出:
java.lang.IllegalArgumentException: 组件已包含在 容器:Container[x=0 y=0 width=1125 height=165 name=null, layout = BorderLayout,scrollableX = false,scrollableY = false,组件 = [按钮]]。
我认为问题在于 removeAll 实际上并没有删除所有可滑动的容器,因此它不会让我在它们的位置创建新容器,但我不太确定。任何帮助将不胜感激。
【问题讨论】:
标签: java codenameone