欢迎来到天天文库
浏览记录
ID:13251066
大小:34.50 KB
页数:3页
时间:2018-07-21
《jframe背景色设置》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、在Java的GUI设计中,Frame和JFrame两者之间有很大差别,如果不认真会有不必要的麻烦,例如GUI背景色的添加为例:importjava.lang.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassMainWindowsextendsJFrame{ privateMainWindowsContentPane; publicMainWindows(){ this.setLayout(null); this.setTitle("题库抽题系统"); this.setBounds(
2、0,0,800,600); this.setBackground(Color.RED);//改成this.getContentPane().setBackground(Color.RED);即可 this.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ System.exit(0); }); } this.setVisible(true); ContentPane=this; } } 该程序运行后背景色并没有变成RED,但是将第5行改成"exten
3、dsFrame"就能改背景色,那么为什么JFrame不行,原因是Frame和JFrame的窗口层次结构不同,具体可参考中国铁道出版社的《Java完美经典》一书。JFrame的窗口包括:JFrame、RootPane、Layeredpane、ContentPane、GlassPane;而Frmae窗口包括:Frame、ContentPane。所以解决的办法是将“this.setBackground(Color.RED);”代码改成“this.getContentPane().setBackground(Color.RED);”即可。例子:classMyFrameextendsJFrame{
4、MyFrame(){setBounds(400,300,440,330);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBackground(Color.blue);//那就是不能给JFrame设置颜色??setVisible(true);}voidgetPane(){JComponentrootPane=(JComponent)getRootPane();//返回值类型container现在把它看成Container当然不能用JComponent中的方法JComponentlayeredPane=(JComponent)getLay
5、eredPane();//返回值类型是JLayeredpaneJComponentcontentPane=(JComponent)getContentPane();//返回值的类型是ContainerJComponentglassPane=(JComponent)getGlassPane();//返回值的类型是Compoent//这也充分说明这些方法中都是用JPanel实现,但返回值却反回了父类//设置所有面板透明rootPane.setOpaque(false);layeredPane.setOpaque(false);contentPane.setOpaque(false);glas
6、sPane.setOpaque(false);rootPane.setVisible(false);layeredPane.setVisible(false);contentPane.setVisible(false);glassPane.setVisible(false);rootPane.setBackground(Color.blue);layeredPane.setBackground(Color.blue);contentPane.setBackground(Color.cyan);glassPane.setBackground(Color.green);——fyg}}
此文档下载收益归作者所有