java JButton在被删除后在JPanel中留下工件?
所以我必须创建一个JLabel
和一个JButton
,把它们放到一个JPanel
中,然后在一个JFrame
中显示它们。单击JButton
时,必须删除JButton
,并更改JLabel
的文本。这一切都很好,除了一件事:当按钮从JPanel
中移除时,它仍然会留下自己的工件。这是我的代码,请自己尝试:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class TestClass
{
public static void main (String[] args)
{
new TestClass();
}
public TestClass()
{
JPanel jpanel = new JPanel();
JLabel jlabel = new JLabel ("-->");
JButton jbutton = new JButton ("Click here!");
jbutton.addActionListener (new ActionListener()
{
public void actionPerformed (ActionEvent event)
{
jlabel.setText ("Good job!");
jpanel.remove (jbutton);
}
});
jpanel.add (jlabel);
jpanel.add (jbutton);
JFrame jframe = new JFrame ("Test Frame");
jframe.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
jframe.setSize (340, 60);
jframe.setResizable (false);
jframe.add (jpanel);
jframe.setVisible (true);
}
}
有没有关于如何解决这个问题的建议?谢谢
# 1 楼答案
试试这个:
这将在删除配电盘后重新绘制配电盘,并设置可见性
# 2 楼答案
移除Swing组件时,应在其容器上调用
revalidate()
,然后调用repaint()
: