JavaSE GUI 笔记


一.AWT(abstract window toolkit)
1.用于java application GUI编程
2.GUI的各中元素(如:窗口、按钮、文本框等)由java类来实现
3.awt涉及的类在java.awt包及其子包中
       awt是旧的图形开发包,因为虽说是跨平台但在各操作系统上的图形表示有区别
       swing是新的图形开发包,其包下的类大都是对awt的类重写,名字多以J开头,如JFrame
4.Container和awt中的两个核心类
5.说明图

Component层次结构图

 


二.Component&Container
1.java的图形用户界面基本的组成部分是Component
2.一般的Component对象不能独立的显示,必须放到Container对象中才可显示
3.Container可以容纳Component,因为Container同时也是Component,所以Container也可以容纳Container.
4.Container使用add(..)方法添加Component
5.常用的两种Container:
   Window:作为顶级窗口独立存在
   Panel:可容纳其他Component,但必须被添加到其他窗口(Window或Applet)才能显示.

 

     Frame:
         1.Frame是Window的子类,由Frame或其子类创建的对象为一个窗体
         2.Frame的构造方法
            Frame()
            Frame(String s)创建标题栏为字符串s的窗口
         3.其他方法
            setBounds(int x,int y, int width,int height)//位置和大小
            setSize(int width,int height)//大小
            setLocation(int x,int y)//位置
            setBackground(Color c)//背景颜色.Color类有很多常量可以使用,(x,y,z)表示颜色红绿蓝分量
            setVisible(boolean b)//是否可见
            setTitle(String name) String getTitle()//标题
            setResizable(boolean b)//是否可调整大小
         练习1:创建一个Frame对象,并给它赋值
         练习2:继承一个Frame的新类,要求一个静态变量统计创建的对象数目,以及其构造函数可以接收多个参数来初始化这个对象,一次显示四个对象

 

     Panel:
         1.可以容纳Component
         2.可以拥有自己的布局管理器
         3.构造方法
             Panel()默认的的布局管理器是FlowLayout
             Panel(LayoutManager mgr)//指定布局管理器来初始化
         4.从父类继承的方法
             setBounds(int x,int y, int width,int height)
             setSize(int width,int height)
             setLocation(int x,int y)
             setBackground(Color c)
             setLayout(LayoutManager mgr)//指定布局管理器
         练习1:将一个Panel添加到Frame中,注意一下Panel的位置
         练习2:将四个Panel添加到Frame中,用颜色来区分,排成两行两列

 

三.布局管理器
1.布局管理器可以管理Component在Container中的布局,不必直接设置Component的位置和大小
2.每个Container都有一个布局管理器对象,当容器需要对某个组件进行定温或判断其大小尺寸时,就会调用其对应的布局管理器,调用Container的setLayout方法改变布局管理器对象
3.常见的五种布局管理器(实现LayoutManager)
  (1)FlowLayout
         不改变组件大小,按组件原有尺寸显示组件,可设置不同组件间距,行距以及对齐方式
         是Panel类的默认布局管理器,默认对其方式为居中
         对组件逐行定温,行内从左到右,一行排满后换行
         构造方法:
               new FlowLayout(FlowLayout.Right,20,40)//设置对齐方式、水平和垂直间距
               new FlowLayout(FlowLayout.Right)//默认水平和垂直间距为5像素
               new FlowLayout()//默认居中的对齐方式,水平和垂直间距为5像素
  (2)BorderLayout
          将整个容器分"东西南北中"五个区域,"南北"在水平方向伸缩,"东西"在垂直方向伸缩,"中"可向水平和垂直方向伸缩
          是Frame类的默认布局管理器
          如果不指定组件添加到哪个区域,则默认加入到"中"区
          每个区域只能加入一个组件,如果多加则先前加入的会被覆盖
  (3)GridLayout
          将空间划分成规则的矩形网格,每个单元的区域大小都一样。
          组件被添加到每个单元格中,先中左到右,再从上到下
          构造方法:
                GridLayout(3,4)
  (4)CardLayout
  (5)GridBagLayout


四.事件监听
1.Listener
     事件模型在awt、swing、jsf和webWork上都有应用
     事件模型的原理与钩子函数、回调函数类似
2.Adapter
     对于的监听器,也有对应的适配器
     使用适配器可以避免监听器类定义没有必要实现的空方法


五.JAVA图形
1.TextField、Label、Button
      学习一个类,办法是写一个测试类测试属性和方法
      练习:编写一个运算器,按"="按钮将两个文本框的值相加,然后显示到第三个文本框,分别使用门面模式或内部类实现监听器接口
     门面模式:通过一个类的引用可以取得该类的属性和方法
2.Graphics
每个Component都有一个paint(Graphics g)实现绘图目的,每次重画该Component时都自动调用paint方法
repaint--调用-->update()--调用--paint()
Graphics类中提供了许多绘图方法,如:
drawRect(int x,int y,int width,int height)
fillRoundRect(int x,int y,int width,int height)


六window事件
事件-事件监听器-事件监听器的命名:XxxEvent-XxxListener-XxxAdapter
MouseEvent-MouseListener-MouseAdapter
WindowEvent-WindowListener-WindowAdapter
练习:测试键盘事件


七内部类:
内部类分成员内部类(作为包装类的成员变量)和匿名类(位于方法参数,例如关闭窗口等执行一次的操作)
非常方便的访问包装类的成员变量或成员方法
不允许或不需要其他类进行访问
当一个类需要实现两个接口,而这两个接口有同样的方法需要实现,则可以在类添加一个内部类来实现不同的接口

你可能感兴趣的:(javase笔记)