JAVA SWING中如何清除JPanel中的组件 然后添加另外的组件

 我来答
一数一道
推荐于2018-12-11 · 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();
  }
  }

  }
  需要特别注意的是移除和添加组件之后,记得重画组件。
痹芒仙年0Z
2020-03-11
知道答主
回答量:2
采纳率:0%
帮助的人:1244
展开全部

我研究过了,你可以用revalidate

  1. panel.remove(button)

  2. panel.revalidate()

亲测很有用,不用先setvisible false 再 true

点击图片预览会触发remove() validate

效果立竿见影

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
杜忆楣03D
2011-08-30 · TA获得超过458个赞
知道小有建树答主
回答量:364
采纳率:0%
帮助的人:393万
展开全部
先jpanel.removeAll();//删除jpanel中的所有组件
然后再添加组件
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
楚又蓝0iTdaf
2011-08-30 · TA获得超过394个赞
知道答主
回答量:108
采纳率:100%
帮助的人:66万
展开全部
你的意思是在程序运行时进行清除操作么?

有一个设置组建隐藏的方法
比如一个 jButton,可以调用jButton.setVisible(false)设置它的隐藏。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
死后是好人
2011-08-30 · TA获得超过2638个赞
知道小有建树答主
回答量:628
采纳率:0%
帮助的人:962万
展开全部
就只有这个方法了,有且只有这一种
楼主你看完会了么?

参考资料: http://zhidao.baidu.com/question/311353304.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式