有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何清空此面板并添加新面板

我有一个主JPanel容器和三个JPanel。如何清空此面板并添加新面板?我试过使用remove(Component),但不起作用。有谁能给我建议吗


共 (6) 个答案

  1. # 1 楼答案

    我也有同样的问题。我为解决这个问题所做的只是

    panelName.setVisible(false);
    mainPanel.remove(panelName);
    

    在我的例子中,panelName是一个位于主面板内的JPanel

  2. # 2 楼答案

    这就行了。诀窍是调用revalidate

    mainPanel = ...
    
    mainPanel.removeAll();
    mainPanel.add(newPanel1);
    mainPanel.add(newPanel2);
    mainPanel.add(newPanel3);
    mainPanel.revalidate();  
    
    <>但是,如果您想更改JPAND中出现的内容,请考虑使用CARDFrase.

  3. # 3 楼答案

    请尝试其他删除方法remove(int index);

  4. # 4 楼答案

    在这个link中,我找到了一个关于如何从面板中添加和删除元素的简单教程。 主面板中的其他面板也是元素,因此相同的原则适用于它们

    在面板中添加新内容时的一个好做法不仅仅是使用add()方法: 我们可能还想使用revalidate()repaint()在发生某些事件时(单击按钮或类似事件时)应该调用它们

    我还想提到的是,在用于删除元素的教程remove()中,您的操作是正确的。可能再次调用其他面板的revalidate()repaint()会使移除的面板从GUI中消失(仅当GUI未刷新时,对象被删除)

    注意:我假设内部面板的元素是可见的=true。如果某些内部元素难以渲染,请尝试同时调用revalidate()repaint()。 我认为这样应该行得通

  5. # 5 楼答案

    @Harry Joy

    如果您添加或删除了(已经可见的容器),则必须调用

    revalidate(); repaint(); // not required in all cases

    @Damir 如果JComponents不是公共(或私有)静态的,那么您可以调用

    myContainer.removeAll();
    myContainer.revalidate();
    nyCOntainer.repaint();
    

    可能的方法是使用Component[] a = myContainer.getComponents();通过某些参数删除JComponent,然后您可以调用if (components[i] instanceof JComboBox) {

  6. # 6 楼答案

    这100%有效

    this.panelname.Controls.Clear();