java如何清空此面板并添加新面板 3 周,2 日 Questions & Answers 8398 我有一个主JPanel容器和三个JPanel。如何清空此面板并添加新面板?我试过使用remove(Component),但不起作用。有谁能给我建议吗
# 1 楼答案 我也有同样的问题。我为解决这个问题所做的只是 panelName.setVisible(false); mainPanel.remove(panelName); 在我的例子中,panelName是一个位于主面板内的JPanel
# 2 楼答案 这就行了。诀窍是调用revalidate mainPanel = ... mainPanel.removeAll(); mainPanel.add(newPanel1); mainPanel.add(newPanel2); mainPanel.add(newPanel3); mainPanel.revalidate(); <>但是,如果您想更改JPAND中出现的内容,请考虑使用CARDFrase.
# 4 楼答案 在这个link中,我找到了一个关于如何从面板中添加和删除元素的简单教程。 主面板中的其他面板也是元素,因此相同的原则适用于它们 在面板中添加新内容时的一个好做法不仅仅是使用add()方法: 我们可能还想使用revalidate()和repaint()在发生某些事件时(单击按钮或类似事件时)应该调用它们 我还想提到的是,在用于删除元素的教程remove()中,您的操作是正确的。可能再次调用其他面板的revalidate()和repaint()会使移除的面板从GUI中消失(仅当GUI未刷新时,对象被删除) 注意:我假设内部面板的元素是可见的=true。如果某些内部元素难以渲染,请尝试同时调用revalidate()和repaint()。 我认为这样应该行得通
# 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) {
# 1 楼答案
我也有同样的问题。我为解决这个问题所做的只是
在我的例子中,panelName是一个位于主面板内的JPanel
# 2 楼答案
这就行了。诀窍是调用revalidate
<>但是,如果您想更改JPAND中出现的内容,请考虑使用CARDFrase.# 3 楼答案
请尝试其他删除方法
remove(int index);
# 4 楼答案
在这个link中,我找到了一个关于如何从面板中添加和删除元素的简单教程。 主面板中的其他面板也是元素,因此相同的原则适用于它们
在面板中添加新内容时的一个好做法不仅仅是使用add()方法: 我们可能还想使用revalidate()和repaint()在发生某些事件时(单击按钮或类似事件时)应该调用它们
我还想提到的是,在用于删除元素的教程remove()中,您的操作是正确的。可能再次调用其他面板的revalidate()和repaint()会使移除的面板从GUI中消失(仅当GUI未刷新时,对象被删除)
注意:我假设内部面板的元素是可见的=true。如果某些内部元素难以渲染,请尝试同时调用revalidate()和repaint()。 我认为这样应该行得通
# 5 楼答案
@Harry Joy
如果您添加或删除了(已经可见的容器),则必须调用
revalidate(); repaint(); // not required in all cases
@Damir 如果JComponents不是公共(或私有)静态的,那么您可以调用
可能的方法是使用
Component[] a = myContainer.getComponents();
通过某些参数删除JComponent
,然后您可以调用if (components[i] instanceof JComboBox) {
# 6 楼答案
这100%有效