4

我已经声明了一个 JLable 如下;

l = new JLabel("Hello");
l.setHorizontalAlignment(SwingConstants.CENTER);
panel.add(l);

现在,我想隐藏或删除它。我应该调用什么方法?

我试过l.removeAll();<---没有发生任何事情。

还有另一个remove(int)需要一个 int 的 calle。但我不确定要传递什么作为参数。

还有一个东西叫hide()。但它已被弃用。

4

7 回答 7

9
i tried l.removeAll(); <--- nothing hapend.

您需要调用添加到remove的位置:JPanelJLabel

panel.remove(l);

//after that you need to call this to revalidate and repaint the panel
panel.revalidate(); 
panel.repaint();

只是隐藏而不是删除呼叫

l.setVisible(false);
于 2012-12-13T12:08:14.603 回答
3

这可能会帮助你

隐藏标签

l.setVisible(false);

通过将 Label 对象作为参数从父对象中移除

panel.remove(l);

移除所有组件

panel.removeAll();
于 2012-12-13T12:07:59.150 回答
2

试试 panel.remove(l);

panel.removeAll() 也应该可以工作,但这也会删除可能已添加到面板的其他组件。

于 2012-12-13T12:02:33.373 回答
2

你可以试试:

setVisible(false)
于 2012-12-13T12:04:38.340 回答
1

应该使用hide()tell的 javadoc 。setVisible()所以试着打电话setVisible(false)

于 2012-12-13T12:01:01.083 回答
0

我在我的项目中遇到了同样的问题。

您应该确保删除以前的控件并刷新面板。

看到这个片段代码:

panel.removeAll();  


panel.revalidate();  

希望这能帮助你一切顺利:)

于 2012-12-13T12:23:13.197 回答
0

你必须使用方法getContentPane()。这种方式可以通过组件的声明名称来移除元素。

私有 JFrame 框架;
私人 JLabel 标签;
...

frame.getContentPane().remove(label);
于 2015-01-27T12:07:35.960 回答