JAVA SWING中如何清除JPanel中的组件?

 我来答
一数一道
推荐于2019-11-08 · TA获得超过1751个赞
知道小有建树答主
回答量:369
采纳率:75%
帮助的人:217万
展开全部
  你可以调用JPanel的remove方法,然后用add添加组件,最后更新重画就可以了。
  一般想要移除和添加一个组件,可能是希望程序在运行时动态的移除和添加,所以你可以为要移除的组件设置一个监听器。
  例如单击某一个组件就移除这个组件,并且添加另外的组件。例如,当单击按钮时,把按钮移除,添加一个文本框。下面是一个具体的例子:
  package konw.win;
  import java.awt.FlowLayout;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  import javax.swing.JButton;
  import javax.swing.JFrame;
  import javax.swing.JPanel;
  import javax.swing.JTextField;
  public class WinTest3
  {
  public static void main(String[] args)
  {
  
  JFrame frame = new JFrame();
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
  frame.setLayout(new FlowLayout());
  JPanel panel = new JPanel();
  JButton button = new JButton("change");
  panel.add(button);
  JTextField f = new JTextField(20);
  ActionListener listener = new ChangeListener(button,panel,f);
  button.addActionListener(listener);//注册监听器
  frame.add(panel);
  frame.setVisible(true);
  
  }
  }
  /*监听器,当单击按钮时,移除button按钮,加入text文本框*/
  class ChangeListener implements ActionListener
  {
  JButton button;
  JPanel panel;
  JTextField text;
  public ChangeListener(JButton button, JPanel panel, JTextField text)
  {
  super();
  this.button = button;
  this.panel = panel;
  this.text = text;
  }

  @Override
  public void actionPerformed(ActionEvent e)
  {
  if("change".equals(e.getActionCommand()))
  {
  panel.remove(button);
  panel.add(text);
  panel.updateUI();
  panel.repaint();
  }
  }

  }
  需要特别注意的是移除和添加组件之后,记得重画组件。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式