GUI——AWT框架和容器,创建简单窗体

GUI概述:GUI(Graphical User Interface)—图形化用户界面。用户和程序之间可以通过GUI能方便友好地进行交互,在Java语言中,JFC(Java Foundation Classed)是开发GUI的API集,它主要包含以下几个部分:

a)   AWT(抽象窗口工具包):Java开发用户界面最初的工具包,是建立JFC的主要基础;

b)   Swing组件:建立在AWT之上,新的,功能更强大的图形组件包;

c)   JAVA 2D:实现高质量的二维图形;

 

AWT框架:

①   在java.awt包中包含了一个完整的类集以支持GUI程序的设计,其中的类及相互关系可以用下图来描述:

②   Component类是最核心的类,它是构成Java图形用户界面的基础,大部分组件都是由该类派生出来的;

③   Component类主要由基本组件和容器(Container)组件组成;

④   容器(Container)组件主要分为:Window容器和Panel容器;

 

Frame容器:

①   Window是能独立存在的容器,它有一个子类Frame,它是一个带有标题和缩放角的窗口;

②   Frame有一个构造方法,Frame(String title);

③   可以通过add()方法,在Frame容器中加入其它组件;

④   Frame容器有默认的布局管理器;

⑤   Frame被创建后,是不可见的;

 

Panel容器:

①   Panel只能存在于其它的容器(Window或其子类)中才能显示出来;

②   通过Panel的默认构造方法Panel()可以创建一个Panel;

③   容器不但能容纳组件,还能容纳其它容器,通过容器的嵌套可以制作出复杂的布局;

创建一个窗体类

 1 class MyFrame1 extends Frame{
 2     public MyFrame1(String title){
 3         super(title);
 4     }
 5     
 6     public void init(){
 7         this.setSize(300, 300);//设置窗体的宽高
 8         this.setBackground(Color.GREEN);//给窗体设置背景色
 9         this.setVisible(true);//设置窗体可见
10     }
11 }

主方法调用

 1 MyFrame1 myFrame1=new MyFrame1("自己的窗体"); 2 myFrame1.init(); 

输出结果如图:

创建一个带Panel和Button的窗体:

 1 class MyFrame2 extends Frame{
 2     public MyFrame2(String title){
 3         super(title);
 4     }
 5     
 6     public void init(){
 7         this.setSize(300, 300);//设置窗体的宽高
 8         this.setBackground(Color.GREEN);//给窗体设置背景色
 9         this.setLayout(null);//去掉窗体的默认的布局管理器
10         
11         Panel panel=new Panel();
12         panel.setLayout(null);//去掉Panel容器默认的布局管理器
13         panel.setBackground(Color.BLUE);
14         panel.setBounds(0, 0, 200, 200);//距离父容器(Frame)上顶点,左顶点0,宽高200
15         
16         Button btn1=new Button("click me");//创建一个按钮
17         btn1.setBounds(0, 0, 100, 100);
18         btn1.setBackground(Color.RED);
19         
20         panel.add(btn1);//添加按钮到面板中
21         
22         this.add(panel);//把panel加到窗体中
23         
24         this.setVisible(true);//让窗体可见
25     }
26 }

输出结果如图:

原文地址:https://www.cnblogs.com/wzy330782/p/5410441.html