java理论之java--GUI(图形用户管理)与 IO/流
GUI(图形用户管理)
一 GUI的组件和容器
Component(所有可显示的元素):
1:它的直接功能子类---Button:对应事件:java.awt.event.ActionEvent;
处理函数:public void actionPerformed(ActionEvent e)
---TextFiled:对应事件:java.awt.event.ActionEvent;
处理函数:public void actionPerformed(ActionEvent e)
---Label
---TextArea
---List
---Scrollbar
---TextComponent
2:Container(容纳其他Component)
(1)Window(自由停放的顶级窗口)---Frame:
---Frame(String str)
---setBounds(int x, int y, int w, int h)
---setSize(int width, int height)
---setLocation(int x, int y)
---setBackground(Color c)
---setVisible(boolean b)
---setTitle(String name)
---setResizable(boolean b)
(2)Panel(在顶级窗口内部的小窗口)
---Applet
---Panel()
---Panel(LayoutManager layout)
---setBounds(int x, int y, int w, int h)
---setResizable(boolean b)
---setVisible(boolean b)
---setTitle(String name)
---setBackground(Color c)
---setLocation(int x, int y)
---setSize(int width, int height)
二 布局管理器
1: 原理 ---管理Component在Container中的布局,不必直接设置Component位置和大小
---每个Container都有一个布局管理器对象,当容器需要对某个组件进行定位活判断其尺寸大小,进行定位时,就会调用其对应的布局管理器,调用Container的setLayout改变对象
2: 5中布局管理
1.FlowLayout(Panle默认布局管理器)
---基本原理:逐行定位,从左到右,从上到下,一行排满后拍下一行;不改变大小,按照原尺寸显示;可设置:间距,行距,对齐方式;默认居中对齐
---方法 (1) FlowLayout();居中对齐,水平,垂直间距默认5
(2)FlowLayout(FlowLayout.LEFT);左对齐,默认5
(3)FlowLayout(FlowLayout.RIGHT,20,40);
2.BorderLayout(Frame默认布局管理器)---EAST
---WEST
---SOUTH
---NORTH
---CENTER
3.GridLayout(表格是布局)---把空间划分成网格,每个格子大小相等,组件被添加到单元格中,左右,上下
4.CardLayout
5.GridBagLayout
三 GUI事件
1:事件处理原理:
---事件源(框架,控件)
---事件对象(键盘,鼠标,)
---监听器对象
---监听器
---目标代码
2:控件事件:用于获取事件发生时控件的状态,然后把我们的操作,返回到指定控件
---ActionEvent
---ActionListener
3:鼠标事件
(1)有哪些鼠标事件:
---mouseClicked(MouseEvent e)
---mouseEntered(MouseEvent e)
---mouseExited(MouseEvent e)
---mousePressed(MouseEvent e)
---mouseReleased(MouseEvent e)
(2)鼠标事件添加:
---给谁添加:Component(组件添加)
---添加的是什么:MouseListener:鼠标事件监听对象
---怎么添加:c.addMouseListener(MouseListener l)
---添加以后咱么办:调用MouseListener类里面的方法,处理对应的鼠标事件
(3)事件类体系:MouseListener()接口-->MouseAdapter()类(空实现)-->我们的处理类(我们就不用实现所有的方法)
4:Window事件
5:键盘事件
各个事件的区别:
1:对控件进行操作的时候,用控件时间(涉及控件邢台的改变)
2:对框架/窗口进行操作的时候,窗口事件
3:涉及绘图,内容改变的时候,用鼠标/键盘事件
4:各个事件有一定的功能重合,怎么用自己选择
四 GUI内部类:就是直接在一个类的内部直接声明的类(和普通类声明方法一样,没有任何区别)
作用:可以直接访问包装内的成员变量和方法,因为内部类直接包含了外部类的引用
好处:清晰的组织代码结构,逻辑更好,防止被其他类非法访问
使用时机:这个类就是为外部类服务的,不需要或者不允许别的类进行访问的时候
-----------------------------------------------
IO流
一:IO流的基本原理:
1:作用:读写数据
2:描述主体对象:当前程序(就是流所在的代码文件)
3:操作的对象:数据(计算机中所有的东西都是以001101的二进制码存在)
4:IO处理:转成字符串输出,转成字符串打印到纸上:输出流,打印流
5:效率处理:缓存流
二:流的分类:
1:输入/输出流---区别:是把外部数据导入当前的程序,还是把当前程序的数据,导入到外部设备
2:字符/字节流---区别:每次读写数据块大小的区别;直接流就是每次读写8位,需要按照字符系统(2个直接,Unicode-16)重新拼装成字符字符流,就是直接按照字符系统指定的大小读写数据块,少了一个拼装过程
3:原始流/处理流---区别:直接用于在程序和设备中直接读取数据的流;和不能在程序和设备中读取数据,只能按照目的处理前者从原始设备和程序中读出的数据的流
三:4个原始流功能与方法:
1:InputStream(理由:一次读取一个字节)/8
(1):int read() throws IOException:读到末尾返回-1
(2):read(byte[] buffer)
(3):read(byte[] buffer,int offset,int length)
(4):close()
(5):skip()
2:OutputStream(一次写入一个字节)/8
(1):write(int b) throws exception
(2):write(byte[] b)
(3):write(byte[] b, int off, int len)
(4):flush()
(5):close()
3:Reader(一次读取一个字符)/16
(1):read()
(2):read(char[] cbuf)
(3):read(char[] cbuf, int offset, int length)
(4):close()
(5):skip()
4:Writer(一次写入一个字符)/16
(1):write(int c)
(2):write(char cbuf)
(3):write(char[] cbuf, int offset, int length)
(4):write(String string)
(5):write(String string, int offset,int length)
(6):flush()
(7):close()
四: 具体的功能类
1:File(硬盘)
2:Memory Array
3:Memory String
4:Pipe(不同线程间)
5:Object(序列化)