Java笔记(9) GUI->Frame和Panel

打印 上一主题 下一主题

主题 972|帖子 972|积分 2916

仅作为笔记
GUI继承体系图



Frame创建
  1. public class Test{
  2.   public static void main(String[] args){
  3.     //新建Frame
  4.     Frame frame = new Frame("This is frame title");
  5.     //设置可见性
  6.     frame.setVisible(true);
  7.     //设置窗口大小
  8.     frame.setSize(400,400);
  9.     //设置背景颜色
  10.     //1. 自行指定rgb,从而创建颜色
  11.     //2. 使用Color类的静态成员定义的预设方案
  12.     //frame.setBackground(new Color(125,125,125));//通过执行rgb值创建颜色方案
  13.     frame.setBackground(Color.lightgray);
  14.     //设置窗口弹出的位置
  15.     frame.setLocation(700,700);//指定窗口左上角坐标
  16.     //设置大小固定,不可拉伸
  17.     frame.setResizeable(false);
  18.     //监听关闭事件
  19.     frame.addwindowListener(new WindowAdapter(){
  20.       public void windowClosing(WindowEvent e){
  21.         System.exit(0);
  22.       }
  23.     });
  24.   }
  25. }
复制代码
至此,一个Frame就定义完成了:


自定义Frame

在需要定义多个Frame的场景中,单独定义每个Frame的效率将会非常低,因此可以通过继承Frame的方式,自定义创建Frame的方法:
  1. public class MyPanel extends Frame{
  2.   static int id = 0;//可能存在多个Frame,设置计数器
  3.   public MyFrame() throws Headless Exception{super();}//无参构造器
  4.   public MyFrame(String title) throws HeadlessException{};
  5.   public MyFrame(int x, int y, int w, int h, Color color){
  6.     super("Customized frame" + (++id));
  7.       setBackground(color);
  8.       setBounds(x,y,w,h);//≈setLocation()+setSize()
  9.       setResizable(false);
  10.       setVisible(true);
  11.   }
  12. }
  13. ================================================
  14. public class Test02{
  15.   public static void main(String[] args){
  16.     Frame frame1 = new MyFrame(300,300,200,200,Color.lightGray);
  17.     Frame frame2 = new MyFrame(500,300,200,200,Color.cyan);
  18.   }
  19. }
复制代码


Panel

实际上,Frame往往仅作为容器存在,想要绘制的窗口内容一般在Panel中实现。
  1. public class TestPanel{
  2.   public static void main(String[] args){
  3.     MyFrame myFrame = new MyFrame(300,300,500,500,Color.green);
  4.     myFrame.addWindowListener( new WindowAdapter(){
  5.       public void windowClosing(WindowEvent e){ System.exit(0); }
  6.     });
  7.     myFrame.setLayout(null);      //设置Frame的布局
  8.     Panel panel = new Panel();    //添加Panel
  9.     panel.setBounds(50,50,200,200);  //Panel设置坐标,其坐标是与其所在的Frame的相对坐标
  10.     panel.setBackground(Color.magenta); //设置Panel的背景
  11.     myFrame.add(panel);    //将Panel添加到Frame
  12.   }
  13. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

杀鸡焉用牛刀

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表