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

如题所述

  你可以调用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();
  }
  }

  }
  需要特别注意的是移除和添加组件之后,记得重画组件。
温馨提示:内容为网友见解,仅供参考
无其他回答

JAVA SWING中如何清除JPanel中的组件?
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 JB...

swing中如何清空penal容器中的组件
JPanel提供了一个removeAll()的方法,可以清空JPanel容器里面所有的组件。如果对你有帮助,别忘了采纳哈😄

java怎么清除JPanel里面所有组件并重绘
用removeAll()方法,JPanel是javax.swing.JComponent的子类,而 javax.swing.JComponent又是java.awt.Container的子类,Container中有removeAll()方法,基本上所有容器都可以使用removeAll()方法.

Java swing怎么设计单击一个面板里的标签来移除另一个面板里的所以组件...
import javax.swing.*;public class Test { public static void main(String[] args) { final JFrame jf = new JFrame();JPanel jp1 = new JPanel();final JPanel jp2 = new JPanel();JLabel jl = new JLabel("移除jp2中的所有组件");jp1.add(jl);jl.addMouseListener(new MouseAdap...

java 中怎样删除当前jframe中的一个jpanel 并添加一个新的jpanel
答: JFrame中, 可以通过 jframe.remove(组件) 方法删除指定的组件 ,也可以通过jframe.add(组件) 方法来添加新的组件 . 值得注意的是,添加和删除组件之后,都需要更新窗口 , 否则可能显示异常 效果图 jp1 里输入用户名, 不能为空 jp1里输入了用户名 jp1被删除,然后显示jp2 参考代码 import javax...

java JPanel如何清除上面的图案
如果想要清除绘制在JPanel上的图象的话,可以直接调用JPanel类的repaint()方法,即可完成清除工作;如果是想要清楚该容器中的子组件的话可以调用remove()或removeAll()方法,注意参数类型。

java 中怎样删除当前jframe中的一个jpanel 并添加一个新的jpanel
干嘛要删除?你把其中的一个先隐藏起来另外一个显示,需要的时候把原来隐藏的显示出来,原来显示的隐藏了不就可以了

谁能给我发一个完整的用Java swing包里JFrame的removeAll()方法的...
import java.awt.Container;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JTextArea;public class RemoveAllFrame extends JFrame implements ActionListener { private static final long serialVersionUID...

java swing 中的列表框JList如何在程序中动态的添加和删除元素_百度知 ...
private JButton jButton3;{ \/\/Set Look & Feel try { javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");} catch(Exception e) { e.printStackTrace();} } \/ Auto-generated main method to display this JFrame \/ public static void main(...

Swing JPanel组件和 JScrollPane组件使用教程
JPanel是一种无边框面板,不能单独存在,它默认使用FlowLayout布局管理器。通过构造函数或setLayout()方法可以自定义布局管理器。尽管JPanel的特殊方法不多,但它们从父类继承,使用简单。JSerollPane是一个具有滚动条的面板,只能容纳一个组件。要添加多个组件,先将它们放入另一个容器中,然后将此容器添加...

相似回答