Swing问题记录

来源:互联网 发布:安卓数据恢复软件 apk 编辑:程序博客网 时间:2024/06/01 10:49

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()而没有进行实际的重绘,很可能是被重绘管理器丢弃了当前请求。

0 0