在Java中删除标签

时间:2013-11-08 15:12:51

标签: java swing jpanel jlabel

我有这段代码,当按下label时,应删除button

final JLabel label = new JLabel("Label text");
rightPanel.add(label);

final JButton remove = new JButton("Remove label");
leftPanel.add(remove);
add.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e)
    {
        rightPanel.remove(label);
    }
});

但是当我点击button时,它不会删除标签文字。只有当我调整窗口大小(例如将其设置为全屏)时,标签文本才会消失。

2 个答案:

答案 0 :(得分:6)

通过camickr提出的前一个here答案,您需要执行以下操作:

代码将是(假设使用JPanel):

panel.remove(...);
panel.revalidate();
panel.repaint(); // sometimes needed

您需要删除该组件,然后告诉面板布局其余组件。

答案 1 :(得分:1)

也许不是你的问题的答案,但我认为有用的建议:只在绝对必要时添加/删除组件。如果您发挥创意,您​​会发现通常有比添加/删除组件更好的解决方案。例如,不要删除JButton,而应考虑禁用它。

在您的情况下,您可以随时label.setText("")。这样您就不需要revalidate()repaint()

我很少在代码中调用revalidate()repaint()。我认为更新现有组件比删除/添加它们更好。