JFrame的面板结构和JPanel的使用

JFrame图解结构框架

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

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

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

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

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

【总结】
使用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上面。img

相关文章
相关标签/搜索