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()而沒有進行實際的重繪,很可能是被重繪管理器丟棄了當前請求。

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