图形用户界面(Graphics User Interface , GUI)
用户与程序交互的窗口,比命令行的界面更加直观并且易于操作。

事件处理(3个因素):
事件(Event):用户对组件的一个操作,称之为一个事件;
事件源(Event source):产生事件的对象;
事件处理方法(Event handler):能够接收、解析和处理事件类对象、实现和用户交互的方法,事件监听器。

接口回调:
当一个对象需要给外部对象提供数据时,我们可以定义一个内部接口把数据通过接口传递出去。
所有外部对象需要这个数据时,就实现这个接口,这样的好处是:
传递数据的对象不直接依赖接收数据的对象(降低耦合性)

awt,swing,swt,Jface是什么?

  1. Sun已经提供了一个跨平台GUI开发工具包AWT抽象窗口工具箱(Abstract Window Toolkit).
  2. Sun又创建了一个新的GUI框架swing.解决了AWT存在的Icd问题.
  3. IBM认为swing比较消耗内存,创建了一个新的GUI库,这就是SWT
  4. IBM为了方便开发SWT程序,在SWT基础上又创建了一个更易用,功能强大的图开包”JFace”

Java中提供了两套GUI图形用户界面组建的类。一套是AWT组件,该套组建的类位于java.awt包下面;另一套是Swing组件,位于javax.swing包中。

Swing有三个常用的容器:JFrame(窗口)、JPanel(面板)和JScrollPane(带滚动条面板)。
JFrame是Swing组件的顶级容器,包含标题栏、最大化/最小化按钮和关闭按钮。Swing组件不能直接放在顶级容器JFrame里,而是要先将组件放置在中级容器面板里,然后再将面板放置在顶级容器JFrame里。

swing组件简单介绍
1、JFrame是Frame的子类
2、属于容器类组件,顶层容器
3、JFrame有一些常用的方法,通过示例与java的帮助文档即可了解。

三大常用布局管理器
1.概念
组件在容器(比如JFrame)中的位置和大小是由布局管理器来决定的。所有的容器都会使用一个布局管理器,通过它来自动进行组件的布局管理。
2.种类
Java共提供了五种布局管理器:流式布局管理器(FlowLayout)、边界布局管理器(BoraderLayout)、网格布局管理器(GridLayout)、卡片布局管理器(CardLayout)、网格包布局管理器(GridBagLayout)。其中前三种是最常见的布局管理器。

边界布局管理器(BoraderLayout)
边界布局将容器简单的划分为东南西北5个区域,中间区域最大。
注意事项:

  • 不是五个部分都必需添加;
  • 中部组件会自动调节大小;
  • JFrame,Jdialog默认布局管理器就是BorderLauout

流式布局管理器FlowLayout
流式布局,按照组件的添加次序将按钮组件(当然也可以是别的组件)从左到右放置在容器中。当到达容器的边界时,组件将放置到下一行中。FlowLayout可以以左对齐、居中对齐、以右对齐的方式排列组件
注意事项:

  • 不限制他所管理的组件大小,允许他们有最佳大小
  • 当容器缩放时,组件的位置可能变化,但组件的大小不变
  • 默认组件是居中对齐,可以通过FlowLayout(intalign)函数来指定对齐方式

网格布局管理器GridLayout
网格布局,听其名而知其意,它将容器分割成多行多列,组件被填充到每个网格中,添加到容器中的组件首先放置在左上角的网格中,然后从左到右放置其它的组件,当占满该行的所有网格后,接着继续在下一行从左到右放置组件。
注意事项:

  • 组件的相对位置不随容器的缩放而变化,但大小会改变
  • 所有组件的大小相同
  • 可以通过GridLayout(int rows,int cols,int hgap,int vgap)来指定网格的行/列,水平间隙/垂直间隙。

网格布局的使用还是很方便的,通过各种参数的调整,对空白填充进行控制即可实现自有布局了。

三大常用布局管理器小结
开发GUI程序步骤
1. 继承JFrame
2. 定义需要的部件
3. 创建组件
4. 设置布局管理器
5. 添加组件
6. 显示窗体

Swing组件详细介绍
面板组件(JPanel)
在图形用户界面的编程中,如果只是普通的组件布局,我们用前面讲的三种布局管理器就可以解决,但在比较复杂的布局要求时,就需要使用布局管理器的组合使用
JPanel:面板组件,非顶层容器,一个界面只可以有一个JFrame窗体组件,但可以有多个JPanel面板组件,而JPanel上也可以使用FlowLayout、BorderLayout、GirdLayout等各种布局管理器,这样可以组合使用达到较为复杂的布局效果。
注意事项:

  • JPanel是JComponent子类
  • 属于容器类组件,可以加入别的组件
  • 默认布局管理器是流式布局

文本款(JTextField)/密码款(JPasswordField)/标签(JLable)组件
这是几个常用组件,经常使用在用户登录界面,例如:会员管理系统,登录到工资管理系统、仓库管理系统等等。

复选框(JCheckBox)/单选框(JRadioButton)组件
这是常用组件,在提供用户注册界面时经常会用到。
注意事项:

  • 同一组单选按钮必须先创建ButtonGroup,然后把单选框组件放入到ButtonGroup中。

下拉框(JComboBox)/列表框(JList)/流动空格(JScrollPane)组件
常用组件,经常在用户调查界面用到。
注意事项:

  • 一般来说,列表框组件+滚动窗格组件是结合使用的。目的是让列表框中的选项可以有滚动条支持。

总结:
1、主要列举了Swing的常用组件(JFrame(框架)、Jpanel(面板)、JButton(按钮)、JLable(标签)、JTextField(文本框)、JPasswordField(密码框)、JCheckBox(复选框)、JRadioButton(单选框)、JComboBox(下拉框)、JScrollPane(滚动窗格)、JList(列表框)),当然Swing组件还有很多,在后面使用时讲解。
2、三大布局管理器(BorderLayout(边界布局)、FlowLayout(流布局)、GridLayout(网格布局)),要灵活使用,从而满足设计需求。

而对于它们的相关代码,其实网上也很多就不罗列了。对于JAVA的GUI其实使用起来真的很繁琐,尤其是在布局方面经常都没办法达到自己预期的效果。
一来是因为对于相关属性不熟悉,二来感觉这里面的布局设置有一些实在是不能达到预期效果。网上对于GUI 的学习并不多,但因为本身的课程作业所以对它有所接触。整个作业下来就会感觉往往在布局方面纠结了太多,但是实际实现的功能却不多。
上面的知识点其实也很杂乱,基本就是自己在学习过程中了解到的一些内容,并没有加以总结成一条线。我觉得对于GUI的学习主要还是通过代码实现,这样才能有实在的效果并且让自己更加深刻的认识。