仅作为笔记

GUI继承体系图Frame创建

public class Test{  public static void main(String[] args){    //新建Frame    Frame frame = new Frame("This is frame title");    //设置可见性    frame.setVisible(true);    //设置窗口大小    frame.setSize(400,400);    //设置背景颜色    //1. 自行指定rgb,从而创建颜色    //2. 使用Color类的静态成员定义的预设方案    //frame.setBackground(new Color(125,125,125));//通过执行rgb值创建颜色方案    frame.setBackground(Color.lightgray);    //设置窗口弹出的位置    frame.setLocation(700,700);//指定窗口左上角坐标    //设置大小固定,不可拉伸    frame.setResizeable(false);    //监听关闭事件    frame.addwindowListener(new WindowAdapter(){      public void windowClosing(WindowEvent e){        System.exit(0);      }    });  }}

至此,一个Frame就定义完成了:
自定义Frame

在需要定义多个Frame的场景中,单独定义每个Frame的效率将会非常低,因此可以通过继承Frame的方式,自定义创建Frame的方法:

public class MyPanel extends Frame{  static int id = 0;//可能存在多个Frame,设置计数器  public MyFrame() throws Headless Exception{super();}//无参构造器  public MyFrame(String title) throws HeadlessException{};  public MyFrame(int x, int y, int w, int h, Color color){    super("Customized frame" + (++id));      setBackground(color);      setBounds(x,y,w,h);//≈setLocation()+setSize()      setResizable(false);      setVisible(true);  }}================================================public class Test02{  public static void main(String[] args){    Frame frame1 = new MyFrame(300,300,200,200,Color.lightGray);    Frame frame2 = new MyFrame(500,300,200,200,Color.cyan);  }}

Panel

实际上,Frame往往仅作为容器存在,想要绘制的窗口内容一般在Panel中实现。

public class TestPanel{  public static void main(String[] args){    MyFrame myFrame = new MyFrame(300,300,500,500,Color.green);    myFrame.addWindowListener( new WindowAdapter(){      public void windowClosing(WindowEvent e){ System.exit(0); }    });    myFrame.setLayout(null);      //设置Frame的布局    Panel panel = new Panel();    //添加Panel    panel.setBounds(50,50,200,200);  //Panel设置坐标,其坐标是与其所在的Frame的相对坐标    panel.setBackground(Color.magenta); //设置Panel的背景    myFrame.add(panel);    //将Panel添加到Frame  }}