大概很多人问过这样的问题:为什么我创建了一个JFrame,启动窗口里面却空空如也?但最大化或者随便resize一下里面那些按钮呀文本框呀就都出来了?以前也碰到过,其实原因很简单:只要在你调用setVisible()或show()之前完成所有的组件设置和部署就不会有这样的现象了。
究其原因
在JavaResearch.org上有篇翻译文章《线程与Swing》已经说得很明白:因为在调用pack()或者show()或者setVisible()的时候就已经直接或间接调用了组件的paint()方法,用文中的术语叫做“具现化”(realized),此时从当前容器开始的所有已有的组件都已经绘制好了,你在add新的组件却并没有对容器进行repaint,当然显示在眼前了。切记,最后再来调用窗口的setVisible(true)!
窗口启动却看不到组件?
最新推荐文章于 2019-08-21 20:42:14 发布