JFrame图解结构

有一窗口框架实例:JFrame win = new JFrame("窗口");
在new JFrame()时,构建了JFrame实例对象,在实例中的Layered Pane层面版中,也默认构建了一个JPanel控件面板。

使用 win.getContentPane( ); 是获取JFrame实例win中默认构建的 JPanel控件面板,获取到后可以往里布置 功能控件(如JButton)。

写一个JPanel控件面板实例:JPanel panel = new JPanel( );

使用 win.setContentPane(panel); 是把 win 中的默认 JPanel控件面板 替换为自定义的 JPanel控制面板 panel。

使用 win.add(panel); 则是在 win 中的默认 JPanel控件面板上叠加布置了--自定义的JPanel控件面板panel,(JPanel是可以嵌套的)。

【总结】
使用JFrame窗体时:
1.可以通过JFrame.getContentPane( )获取 JFrame窗体实例 默认构建的JPanel控件面板,然后往上布置功能控件。
2.可以通过JFrame.setContentPane(JPanel实例) 将 JFrame窗体实例 默认的 JPanel控件面板 替换成 自定义的JPanel控件面板。
3.可以通过JFrame.add(JPanel实例) 在 JFrame窗体实例 默认的 JPanel控件面板之上 叠加布置上自定义的JPanel控件面板。

【常见问题解决】
1.使用JFrame.setBackground(Color.pink)后无效果:
此时是对窗体的背景颜色设置,而窗体之上还有一个默认构建的JPanel是不透明白色,所以看不到给JFrame设置的颜色。
解决1:通过JFrame.getContentPane().setBackground(null);把JFrame默认构建的JPanel的颜色设置为null,那么窗体的背景颜色就显示出来了。
解决2:通过JFrame.getContentPane().setOpaque(false);把JFrame默认构建的JPanel的不透明度设置为false纯透明,那么窗体的背景颜色就显示出来了。
解决3:直接通过JFrame.getContentPane().setBackground(xxx)将JFrame默认JPanel设置颜色,功能控件布置到它上面就行了,窗体颜色不用设置。
解决4:自定义JPanel设置它的背景颜色,通过JFrame.setContentPane(JPanel实例)将自定义JPanel设置为JFrame的默认JPanel。
解决5:自定义JPanel设置它的背景颜色,通过JFrame.add(JPanel实例)将自定义JPanel叠加布置到JFrame的默认JPanel上面。

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/Ventus/p/12169370.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!