Swing问题记录

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章