【问题标题】:Removing items in a container移除容器中的项目
【发布时间】:2012-05-12 06:21:55
【问题描述】:

当我尝试从容器中移除组件时,我使用了这段代码。

private static void clear(){
    for (int i = con.getComponentCount() - 1; i >= 1; i--){
        con.remove(i);
    }
}

当我调用这个函数时,这个函数表现得好像它什么也没做,但它就像它的重载一样崩溃。它没有错误。但是当我将con.getComponent(i).setVisible(false); 放入代码中时它可以工作,但我想删除组件。哈普?

【问题讨论】:

  • 我假设这个函数在一个类中,而 con 是那个类的成员变量?您可以包含声明和实例化该变量的行吗?还有,当它崩溃时,没有错误?
  • @NathanielFord:可能是java.awt.Container 实例。
  • 我希望这不是一个真正的可变静态。 (你是多线程的吗?为什么不想删除组件 0?)

标签: java eclipse components containers


【解决方案1】:

试试这个:

while (con.getComponentCount()>0) {
    con.remove(0);
}

【讨论】:

  • 总的来说,我更喜欢这种方法。但是,以上怎么会触发IOOBE呢?
  • @pst:对。在i 变量在循环中递减之前没有注意到。
【解决方案2】:

在您完成删除要删除的组件后,调用 Container.validate(); Container.repaint();实际上,您可能还想重新验证更多内容。

【讨论】:

  • 那么问题解决了吗?如果是这样,您应该将最佳解决方案标记为正确。这将关闭问题
【解决方案3】:

你在移除组件后尝试过 containerObject.repaint() 吗?

【讨论】:

    【解决方案4】:

    假设con是一个awt Container,可以调用

    con.removeAll();
    

    一次删除所有包含的组件。

    【讨论】:

      猜你喜欢
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多