永发信息网

如何动态地从jpanel里删除组件,然后添加一个

答案:1  悬赏:0  手机版
解决时间 2021-04-13 13:17
如何动态地从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);

}
}

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();
}
}

}
需要特别注意的是移除和添加组件之后,记得重画组件。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
增压水泵选择。
“为了你,我把对我好的人都推开了,最后,连你
麦子在05年到底经历了什么
为什么会对一个坏坏的人产生错觉
单选题铁跟硫化合生成硫化亚铁的反应不易进行
地下城装备被盗怎么写那位大哥写个例子让我看
请教:600151短线是否可以买入
西宁房地产集团新旭物业管理公司地址在哪,我
倒影的诗句,形容倒影的句子
新鲜粽叶注册商标属于哪一类?
家长打孩子可以吗
为什么海水养殖导致水体富营养化
第Ⅱ卷(共三节,满分45分)第一节:七选五:根
英语笑话!!
运算放大器的输入偏置电流 是由哪里提供?
推荐资讯
成都龙泉水果批发市场在哪?咋走。
无线跪求YY2.0多开器
速度与激情1
诺贝尔奖获得者费舍儿发现卟啉铁(C12H32ClFe
单机联机是什么意思,什么游戏可以手机联机
“船摆心仪两山间”大家猜猜是哪三个数字?
韩流是什么?
甲流VS非典
给神火Y8手电筒换灯珠{光源}高手老手请进。
关于网名``
彩虹岛力量双刀装备问题?
急!!我的电脑上,存在7月22日全食照片,可
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?