- AWT:
- AWT(Abstract Window Toolkit)包括了很多类和接口,用于Java Application的GUI(Graphics User Interface 图形用户界面)编程.
- GUI的各种元素(如:窗口,按钮,文本框等)由Java类来实现.
- 使用AWT所涉及的类一般在java.awt包及其子包中.
- Container和Component是AWT中的两个核心类
- Container&Component:
- Component:
- Java的图形用户界面的最基本组成部分是Component,Component类及其子类的对象用来描述以图形化的方式显示在屏幕上并能与用户进行交互的GUI元素,例如,一个按钮,一个标签等.
- 一般的Component对象不能独立地显示出来,必须将"放在"某一的Container对象中才可以显示出来.
- Container:
- Container是Component子类,Container子类对象可以"容纳"别的Component对象
- Container对象可使用方法add(..)向其中添加其他Component对象.
- Container是Component的子类,因此Container对象也可以被当做Component对象添加到其他Container对象中.
- 有两种常用的Container:
- Window:其对象表示自有停泊的顶级窗口
- Panel:其对象可作为容纳其他Component对象,但不能独立存在,必须被添加到其它Container中(如Window 或 Applet)
- Component:
- Frame:
- Frame是Window的子类,由Frame或其子类创建的对象为一个窗体
- Frame的常用构造方法:
- Frame()
- Frame(String s)创建标题栏为字符串s的窗口
- Frame的常用方法:
- setBounds(int x,int y,int width,int height)
- setSize(int width,int height)
- setLocation(int x,in y)
- setBackground(Color c)
- setVisible(boolean b)
- setTitle(String name)
- String getTitle()
- setResizable(boolean b)//设置是否可以改变窗口大小
- Panel:
- Panel对象可以看成可以容纳Component的空间
- Panel对象可以拥有自己的布局管理器
- Panel类拥有从其父类继承来的
- setBounds(int x,int y,int width,int height)
- setSize(int width,int height)
- setLocation(int x,in y)
- setBackground(Color c)
- setLayout(LayoutManager mgr)等方法
- Panel的构造方法为:
- Panel()使用默认的FlowLayout类布局管理器初始化.
- Panel(LayoutManager layout)使用指定的布局管理器初始化
- 当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以有自己的布局管理器.
- 布局管理器:
- Java语言中,提供了布局管理器类的对象可以管理
- 管理Copmponent在Container中的布局,不必直接设置Component位置和大小.
- 每个Container都有一个布局管理器对象,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器,调用Container的setLayout方法改变其布局管理器对象.
- Awt提供了5种布局管理器类:
- FlowLayout
- BorderLayout
- GridLayout
- CardLayout
- GridBagLayout
- 使用布局管理器时,布局管理器负责各个组件的大小和位置,因此用户无法再这种情况下设置组件大小和位置属性,如果试图使用Java语言提供的setLocation(),setSize(),setBounds()等方法,则都会被布局管理器覆盖.
- 如果用户确实需要亲自设置组件的大小或位置,则应取消该容器的布局管理器,方法为:
- setLayout(null)
- Java语言中,提供了布局管理器类的对象可以管理
- FlowLayout:
- FlowLayout是Panel类的默认布局管理器
- FlowLayout布局管理器对组件逐行定位,行内从左到右,一行排满后换行.
- 不改变组件的大小,按组件原有尺寸显示组件,可设置不同的组件间距,行距以及对齐方式.
- FlowLayout布局管理器默认的对齐方式是居中
- FlowLayout的构造方法:
- new FlowLayout(FlowLayout.RIGHT,20,40);
- new FlowLayout(FlowLayout.LEFT);
- new FlowLayout();//使用默认的居中对齐方式,水平和垂直间距为省缺值(5)像素
- FlowLayout是Panel类的默认布局管理器
- BorderLayout
- BorderLayout是Frame类的默认布局管理器
- BorderLayout将整个容器的布局划分成
- 东(EAST)
- 西(WEST)
- 南(SOUTH)
- 北(NORTH)
- 中(CENTER)五个区域,,组件只能被添加到指定的区域.
- 如不指定组件的加入部位,则默认加入到CENTER区.
- 每个区域只能加入一个组件,如加入多个,则先前加入的会被覆盖.
- BorderLayout型布局管理器尺寸缩放原则:
- 北、南两个区域在水平方向缩放.
- 东、西两个区域在垂直方向缩放.
- 中部可在两个方向上缩放.
- GridLayout:
- GridLayout型布局管理器将空间划分成规则的矩形网络,每个单元格区域大小相等.组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下.
- 在GridLayout构造方法中指定分割的行数和列数:
- 如:GridLayout(3,4)
- TextField事件监听:
- TextField对象可能发生Action(光标在文本框内敲回车)事件.与该事件对应的事件类是java.awt.event.ActionEvent
- 用来处理ActionEvent事件是实现了java.awt.event..ActionListener接口的类的对象.ActionListener接口定义有方法:
- public void actionPerformed(ActionEvent e)
- 实现该接口的类要在该方法中添加事件(Action)的语句.
- 使用addActionListener(ActionListener i)方法为TextField对象注册一个ActionListener对象,当TextField对象发生Action事件时,会生成一个ActionEvent对象,该对象作为参数传递给ActionListener对象的actionPerformed方法在方法中可以获取该对象的信息,并做相应的处理.
- 持有对方的引用
- 内部类:
- 好处:
- 可以方便的访问包装类的成员
- 可以更清楚的组织逻辑,防止不应该被其他类访问的类进行访问
- 何时使用:
- 该类不允许或不需要其他类进行访问时
- 好处:
- Graphics类 Paint方法
- 每个Conponent都有一个paint(Graphics g)用于实现绘图目的,每次重画该Conponent时都自动调用paint方法。
- Graphics类中提供了许多绘图方法,具体请查询API文档
- 鼠标事件适配器
- 抽象类java.awt.event.MouseAdapter实现了MouseListener接口,可以使用其子类作为MouseEvent的监听器,只要重写其相应的方法即可。
- 对于其它的监听器,也有对应的适配器。
- 使用适配器可以避免监听器类定义没有必要的空方法。
- 双缓冲 :repaint() - update() - paint();
- Window事件
- Window事件所对应的事件类为WindowEvent,所对应的事件监听接口为WindowListener。
- 与WindowListener对应的适配器为WindowAdapter。
- 总结:
- 一个图
- 布局管理器
- 事件模型
- ActionEvent
- MouseEvent
- WindowEvent
- KeyEvent
- graphics类和paint方法
- 双缓冲 repaint() - update() - paint();
- 内部类、匿名类
GUI 【java笔记】
最新推荐文章于 2024-09-10 10:21:38 发布