之前在开发程序的时候遇到一个问题,就是在窗口的面板里添加JBtton后但窗口显示时,按钮不显示,要等鼠标滑过按钮上面时才显示出来,根据这个问题我发了个帖子寻求大神帮忙,遇到一个大神指点了一下,他说我可能是因为窗口创建比JButton实例化早所以才会出现这样的情况,经过反复尝试,我找到了一个解决的方法,在这里记录一下:
的确可能是因为窗口在初始的时候并没有给后面要显示的JButton预留空间,在窗口创建后JButton虽然存在但是被窗口挡住了,要等鼠标滑过才能显示出来,所以我改成了在初始化窗口的时候,在窗口中为JButton预留了一个JPanel面板,再将面板用一个其他类的静态变量关联起来,后面在需要修改面板里面的JButton的时候使用窗口的实例(即JFrame的实例,这里用win表示)调用刷新的方法就可以实现修改窗口里的组件并显示,调用方法如下:
win.validate();
win.repaint();
不过有一个要关键的就是在初始化窗口的时候,要用其它类的静态变量跟你要操作的窗口进行关联,这样后面才可以对你要操作的窗口进行刷新,例如我这里的win就是公共类common的一个全局变量,在我窗口的初始化中在用创建窗口时就有下面的代码:
JFrame jf = new JFrame();
common.win = jf;
在这个问题上我的解决方法就是这样,在创建窗口时给要操作添加或删除的组件预留面板,用刷新窗口的类的静态变量关联窗口,在刷新的类中对窗口进行操作后刷新重绘窗口。