GUI-图形界面编程-1

什么是GUI?

GUI全称Graphical User Interfaces,意为图形用户户界面,又称为图形用户接口,一般称为图形界面编程。GUI指的就是采用图形方式显示的计算机操作用户界面,比如:平时使用的QQ。现在公司中很少会再有使用GUI技术桌面应用程序。

GUI学习内容

在GUI图形界面编程,需要学习什么内容?
1.学习常见的组件 (比如按钮,单选按钮,文本框等都叫组件)
2. 布局 (如何摆放组件,排列的漂亮)
3. 事件监听机制(功能)
比如:点击计算器上面的数字1,就会显示1,不点击,不显示;可以理解为点一下按钮,后台将会执行一段代码,这段代码最终让数字显示在计算器屏幕上.

GUI常用组件继承体系

  • component介绍
    Component;
    Component 这个类是什么含义?
    表示组件,它是其他组件的父类;
    组件:是一个具有图形表示能力的对象,可在屏幕上显示,并可与用户进行交互。典型图形用户界面中的按钮、复选框和滚动条都是组件示例。Component 属于 java.awt包;
    使用图形界面编程的两个包:Java.awt / javax.swing
    常用的组件体系:
    Component 是所有组件的父类, 提供很多基础的功能.

  • container容器
    容器作用 ? 用于装组件;
    container 是component的子类;
    Button 也是component 的子类;
    容器特殊性: 放其他组件,比如可以放button组件
    一般的容器对象是一个可包含其他awt组件的组件,它本身是一个组件;
    Panel/window 是container 的子类

  • TextComponent
    TextComponent 类是所有允许编辑文本的组件的超类
    子类: TextArea / TextField
    TextArea:显示文本的多行区域 ;TextField: 表示单行文本组件;

  • 文本组件用途
    TextArea和TextField的用途:
    发帖,聊QQ,用eclipse新建类时候,有个supleclass 和 interfaces 文本框就是文本组件;

  • Panel
    Panel 是 最简单的容器类,可以放置其他组件。

  • Window
    Window是一个没有边界 和 菜单栏的顶层窗口

  • dialog
    dialog属于对话框;

  • Frame
    Frame 是带有标题和边框的顶层窗口
    比如做一个计算器,需要创建Frame,并且Frame是可以带标题;
    GUI-图形界面编程-1_第1张图片

GUI第一个窗体程序(计算器)

组件熟悉之后,下一步,写一个简单的可视化的窗体程序;比如,现在我们要搞一个计算器简易界面,首先是不是要使用组件搞一个界面框出来?根据刚才我们讲的,应该用哪个组件来画这个框框?我们需要一个带标题和边框的窗体:Frame

  • 搭建环境

    在工程里面创建包和类
    包 cn.itsource.gui
    类 FrameDemo

  • 创建一个窗体
    Frame:一个带有标题和边框的窗体
    怎么创建一个窗体Frame对象?
    Frame f = new Frame();
    运行:发现jvm启动一会就关闭了,但是我们根本没有看到任何效果。这是为什么呢?怎么查找我们?查看api发现,无参的是一个不可见的。
    Frame() 构造一个最初不可见的 Frame 新实例()。

  • 设置窗体可见
    设置窗体可见:f指代Frame对象;调用f.setVisable(true) 用来显示窗体Frame;
    怎么在api文档里查看这个方法?是不是在Frame上设置的?所以我们在Frame上找找,我找啊找,没找到!!!怎么办?当前类没有找到,是不是往上在父类中一层一层的找啊?来,根据组件继承体系,先在父类中找。这么多方法,怎么找?Ctrl+f,搜索setVisable,是不是出来了?

  • 设置窗体大小
    提高用户体验?
    f.setSize(width,height) //设置窗体Frame 对象的大小
    Width 的单位是什么呢? 像素:像素就是一个个无数的点组成的。看我们电脑的分辨率设置。可以调一下分辨率看看效果。

  • 设置窗体初始化位置
    f.setLocation(x,y);//坐标x,y
    可以画一个xy的轴图描述xy分别代表什么
    X: 这里表示窗体距离屏幕左边的位置;
    Y: 表示窗体距离屏幕上边的距离;
    我们可以随便打开一个窗体,比如计算,x,y就是计算器最左上角那个点距离屏幕左侧和上侧的距离。

  • 设置窗体标题
    通过Frame构造函数设置Frame的标题
    Frame f = new Frame(“计算器”);
    GUI-图形界面编程-1_第2张图片

向窗体中添加组件

  • 添加组件写在哪里
    添加组件代码写在设置可见之前;因为需要在组件都创建完之后,也就是数据准备完之后,再设置窗体可见,否则有可能会出现窗体已经显示出来了,但是组件还没有完全加载出来;
public static void main(String[] args) {
		Frame f=new Frame("计算器");
		//添加组件		
		f.setSize(400, 400);//设置窗体大小
		f.setLocation(800,300);//设置窗体位置
		f.setVisible(true);//设置窗体可见

}
  • 添加按钮

创建按钮方法: Button b =new Button();
1:查阅API文档;
在这里插入图片描述
2:把鼠标放在Button( )小括号当中,按代码提示 alt+/;
GUI-图形界面编程-1_第3张图片

  • 向窗体中添加按钮
    向窗体中添加组件:
    f.add(Component p) : 需要Component类型的对象,此处可以传入任意Component对象以及它子类的对象,(多态体现) 传个button 也可以;
    Component 是个类,也可以添加其子类button;
    如果Component是个接口怎么办? ----- 接口不能直接new个对象,应该传接口实现类对象;

设置窗体的布局 – 流式布局

  • 添加两个按钮
    创建两个按钮后被重叠了,只能看到第二个按钮,不能达到我们的效果?怎么办?就需要学习我们的布局。
Public static void main(String arg[]){
	Frame f = new Frame(“计算器”);
	Button b1 = new Button(“确定”);
	f.add(b1);
	Button b2 = new Button(“取消”);
	f.add(b2);
	
	f.setVisable(true);
	f.setSize(500,600);
	f.setLocation(200,100);
}

如果让 “确定”,“取消”并排显示怎么办?

需要设置布局:
设置容器Frame内部的组件的布局方式;画图演示,
布局模式是什么?应该在什么组件上布局?
比如 教室,可以想象成容器,里面桌子 ,按照88模式进行摆放,这里88(8行8列)是一种布局模式,这个布局是对教室进行设置不是桌子,所以我们应该在窗体f上设置布局;

  • 设置布局
    通过setLayout 方法设置布局模式;
    f.setLayOut(LayoutManager mgr) 需要传入LayoutManger 对象
    LayoutManger参数 可能是接口也可能是类?
    是个类,直接new 类的对象;
    是接口,传入实现类的对象 ;

  • 布局模式介绍
    API (LayoutManger)
    LayoutManger相当于布局模式的一个接口,标准;而LayoutManger下面已知的实现类,可以看着具体的布局模式;
    介绍几种常见的布局模式:
    FlowLayout(流式布局) BorderLayout(边框布局) GridLayout(网格布局)

常用布局介绍
第一种:Flowlayout 流式布局
流式布局: 它是面板的默认布局管理器类,使用时,像在页面中排列英文单词那样排列组件:从左到右,当前行没有空间后进入下一行;
GUI-图形界面编程-1_第4张图片

第二种: borderlayout 边框布局
边框布局: 它将容器中的组件放置在特定的位置,该位置有5个方位:东、南、西、北、中。其中4个位置由方向罗盘方向指定,另外一个由中心区域指定。
GUI-图形界面编程-1_第5张图片
第三种: gridlayout 网格布局
网格布局:它将容器中所有的组件组织为指定的行数和列数。分配给每个组件的显示区域都相同,因此如果指定2*3的网格,容器将被划分为6个大小相等的区域;
GUI-图形界面编程-1_第6张图片
第四种:指定每个组件大小和位置

  • 设置流式布局

怎么查找到FlowLayout?
通过LayoutManager查找API文档,在查找继承体系, 找到FlowLayout;
f.setLayout(new FlowLayout());
GUI-图形界面编程-1_第7张图片
运行结果
GUI-图形界面编程-1_第8张图片

  • 根据内容自动变长

按钮根据里面的内容进行自动变长
GUI-图形界面编程-1_第9张图片
默认位置居中,还有间距,这些都可以调整的;

  • 构造方法
    GUI-图形界面编程-1_第10张图片
    FlowLayout(int align) 指定对齐方式,就是左对齐,右对齐,居中对齐
    FlowLayout.LEFT 是 FlowLayout类的全局常量;
    在这里插入图片描述
    FlowLayout(int align,int hgap,int vgap) 指定水平和垂直间隙
    GUI-图形界面编程-1_第11张图片

你可能感兴趣的:(GUI,java,图形界面编程)