为了账号安全,请及时绑定邮箱和手机立即绑定

如何动态更改JFrame中的JPanel?

如何动态更改JFrame中的JPanel?

桃花长相依 2019-07-27 10:19:27
如何动态更改JFrame中的JPanel?简单来说,有一个简单的java swing应用程序,它由JFrame和其中的一些组件组成。其中一个组件是JPanel,它意味着在用户操作上被另一个JPanel替换。那么,做这样事情的正确方法是什么?我试过了panel = new CustomJPanelWithComponentsOnIt();parentFrameJPanelBelongsTo.pack();但这不行。你会建议什么?
查看完整描述

3 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

您的用例,对于CardLayout来说似乎很完美。

在卡片布局中,您可以在同一位置添加多个面板,然后一次显示或隐藏一个面板。


查看完整回答
反对 回复 2019-07-27
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

1)设置第一个面板:

JFrame frame=new JFrame();frame.getContentPane().add(new JPanel());

2)更换面板:

frame.getContentPane().removeAll();frame.getContentPane().add(new JPanel());

另请注意,您必须在Event的Thread中执行此操作,以确保使用SwingUtilities.invokeLaterSwingWorker


查看完整回答
反对 回复 2019-07-27
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

frame.setContentPane(newContents());frame.revalidate(); // frame.pack() if you want to resize.

请记住,Java使用'按值复制引用'参数传递。因此,更改变量不会更改传递给其他方法的引用的副本。

另外请注意JFrame,在可用性的名称中非常混乱。添加组件或设置布局(通常)会在内容窗格上执行操作。奇怪的是,获得布局确实给你框架的布局管理器。


查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 1157 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号