黑马程序员_GUI

------- android培训java培训、期待与您交流! -------

GUI

1、GUI全称是GraphicalUser Interface,即图形用户界面,在Java里有两个包为GUI设计提供丰富的功能,它们是AWT和 Swing。AWT是Java的仅包括AWT中具有的所有部件,并且提供了更加丰富的组件和功能,它足以完全实现GUI设计所需的一切功能。

容器其实是一种比较特殊的组件,可以容纳其它组件,如窗口、对话框等

早期版本,其中的AWT组件种类有限,可以提供基本的GUI设计工具,却无法完全实现目前GUI设计所需的所有功能。Swing是SUN公司对早期版本的改进版本

仅包括AWT中具有的所有部件,并且提供了更加丰富的组件和功能,它足以完全实现GUI设计所需的一切功能。

容器其实是一种比较特殊的组件,可以容纳其它组件,如窗口、对话框等

 

继承关系图

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Container:为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。

GUI

GraphicalUser Interface(图形用户接口)。

用图形的方式,来显示计算机操作的界面,这样更方便更直观。

CLI

Commandline User Interface (命令行用户接口)

就是常见的Dos命令行操作。

需要记忆一些常用的命令,操作不直观。

举例: 

比如:创建文件夹,或者删除文件夹等

Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中。

Awt与 Swing

java.Awt:Abstract Window ToolKit (抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件。

javax.Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。

布局管理器容器中的组件的排放方式,就是布局。\

常见的布局管理器:

FlowLayout(流式布局管理器)

从左到右的顺序排列。

Panel默认的布局管理器。

BorderLayout(边界布局管理器)

东,南,西,北,中

Frame默认的布局管理器。

GridLayout(网格布局管理器)

规则的矩阵

CardLayout(卡片布局管理器)

选项卡

GridBagLayout(网格包布局管理器)

非规则的矩阵

BorderLayout(边框布局)

这是一个布置容器的边框布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH、SOUTH、EAST、WEST、CENTER。当使用边框布局将一个组件添加到容器中时,要使用这五个常量之一

BorderLayout() 构造一个组件之间没有间距的新边框布局。

BorderLayout(int hgap, int vgap) 构造一个具有指定组件间距的边框布局。

FlowLayout(流式布局)

FlowLayout() 构造一个新的FlowLayout,它是居中对齐的,默认的水平和垂直间隙是 5 个单位。

FlowLayout(int align) 构造一个新的FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是 5 个单位。

GridLayout

GridLayout() 创建具有默认值的网格布局,即每个组件占据一行一列。

GridLayout(int rows, int cols) 创建具有指定行数和列数的网格布局。

GridLayout(int rows, int cols, int hgap, int vgap) 创建具有指定行数和列数的网格布局。

JLabel,JButton,JTextField

Lalel

 

JLabel()建无图像并且其标题为空字符串的 JLabel。

JLabel(Icon image) 创建具有指定图像的JLabel 实例。

JButton

JButton() 创建不带有设置文本或图标的按钮。

JButton(Action a) 创建一个按钮,其属性从所提供的 Action 中获取。

 JTextField

JTextField 是一个轻量级组件,它允许编辑单行文本.

 事件处理机制

事件源(组件)

事件(Event)

监听器(Listener)

事件处理(引发事件后处理方式

事件:用户对组件的一个操作,称之为一个事件。

事件源:发生事件的组件就是事件源。

确定事件源(容器或组件)

通过事件源对象的addXXXListener()方法将侦听器注册到该事件源上。

该方法中接收XXXListener的子类对象,或者XXXListener的子类XXXAdapter的子类对象。

一般用匿名内部类来表示。

在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。

事件触发后会把事件打包成对象传递给该变量。(其中包括事件源对象。通过getSource()或者,getComponent()获取。

事件处1、GUI全称是Graphical User Interface,即图形用户界面,在Java里有两个包为GUI设计提供丰富的功能,它们是AWT和 Swing。AWT是Java的早期版本,其中的AWT组件种类有限,可以提供基本的GUI设计工具,却无法完全实现目前GUI设计所需的所有功能。Swing是SUN公司对早期版本的改进版本,它不仅包括AWT中具有的所有部件,并且提供了更加丰富的组件和功能,它足以完全实现GUI设计所需的一切功能。

组件又称构件,诸如按钮、文本框之类的图形界面元素

容器其实是一种比较特殊的组件,可以容纳其它组件,如窗口、对话框等

菜单

MenuBar,Menu,MenuItem

先创建菜单条,再创建菜单,每一个菜单中建立菜单项。

也可以菜单添加到菜单中,作为子菜单。

通过setMenuBar()方法,将菜单添加到Frame中。

 BorderLayout(边框布局)

这是一个布置容器的边框布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH、SOUTH、EAST、WEST、CENTER。当使用边框布局将一个组件添加到容器中时,要使用这五个常量之一

BorderLayout() 构造一个组件之间没有间距的新边框布局。

BorderLayout(int hgap, int vgap) 构造一个具有指定组件间距的边框布局。

FlowLayout(流式布局)

FlowLayout() 构造一个新的FlowLayout,它是居中对齐的,默认的水平和垂直间隙是 5 个单位。

FlowLayout(int align) 构造一个新的FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是 5 个单位。

FlowLayout(int align, int hgap, int vgap) 创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水平和垂直间隙。

GridLayout

GridLayout() 创建具有默认值的网格布局,即每个组件占据一行一列。

GridLayout(int rows, int cols) 创建具有指定行数和列数的网格布局。

GridLayout(int rows, int cols, int hgap, int vgap) 创建具有指定行数和列数的网格布局。

JLabel,JButton,JTextField

JLalel

JLabel() 创建无图像并且其标题为空字符串的 JLabel。

JLabel(Icon image) 创建具有指定图像的JLabel 实例。

JLabel(Icon image, int horizontalAlignment) 创建具有指定图像和水平对齐方式的

JLabel 实例。

JLabel(String text) 创建具有指定文本的JLabel 实例。 Container常用子类:Window   Panel(面板,不能单独存在。)

Window常用子类:Frame  Dialog

简单的窗体创建过程:

Frame  f = new Frame(“my window”);

f.setLayout(newFlowLayout());

f.setSize(500,400);//设置窗体大小

f.setLocation(300,200);//设置窗体出现在屏幕的位置

f.setVisible(true);

 

 

每日心得与总结:先要听老师讲的,理解他的思路,然后试着写老师讲的代码,不会的时候可一看看老师的代码,关键是要知道代码为什么这样写,还要学会检查异常,解决异常,这一点也很重要

我认为之所以出现线程,就是为了更好的利用CPU,让她更加“精明”的干活。通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。然后通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程终止,而CPU再运行其它线程,而如果直接用Run方法,这只是调用一个方法而已,程序中依然只有主线程--这一个线程,其程序执行路径还是只有一条,
这样就没有达到写线程的目的。记住:线程就是为了更好地利用CPU,
提高程序运行速率的
Object是所有类的基类,这个我查询jdk文档了解,所有类都继承自Object。
Object ...objects这种参数定义是在不确定方法参数的情况下的一种多态表现形式。即这个方法可以传递多个参数,这个参数的个数是不确定的。这样你在方法体中需要相应的做些处理。因为Object是基类,所以使用Object ...objects这样的参数形式,允许一切继承自Object的对象作为参数。这种方法在实际中应该还是比较少用的。

所以学好Object和线程也是很有必要的。


 




---------- android培训java培训、期待与您交流! ----------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值