Swing问题记录

本文探讨了在不同操作系统中JFrame尺寸显示异常的问题,并提供了解决方案。通过调整代码顺序和使用pack()方法,可以确保窗口正确显示。此外,还讨论了JPanel尺寸设置无效的情况及解决方法。

JFrame不按尺寸显示

具体描述:我把win下面写的正常的代码拿到linux下跑了一下,结果窗口变成了小小的一团,并没有按照代码那样显示。
正常显示应该是这样的
实际却是这样的
代码

JFrame window = new JFrame("坦克大战");
window.setSize(960, 640);
window.setVisible(true);
window.setResizable(false);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

分析了以后,可能问题在语句的顺序上,java顺序执行的时候,代码的速度比系统绘制快。当setVisiable的时候,系统开始绘制图形,但是还没有绘制完成,就被调用了SetResizable,所以窗口变成了一小团。所以调换一下顺序就好了,把所有设置属性的方法都放到前面,然后会导致窗口显示的方法放到最后。
其次,应该注意pack()和repaint()方法的使用

JPanel设置大小无效

JPanel设置setSize()方法无效,有同样问题的还有JLable,不知道具体原因。
替代的可以设置setPreferredSize()作为组件的优先大小,顶级容器会将此值作为该容器的优先大小进行显示。
在顶级容器设置setVisible()之前,调用pack()或者validate()方法检查容器的,这两个方法会重新排布容器的位置。但是通常使用他们的目的是强制绘制一次界面达到更新的效果,一般如果只是简单调用repaint()而没有进行实际的重绘,很可能是被重绘管理器丢弃了当前请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值