java生产者消费者gui_java理论之java--GUI(图形用户管理)与 IO/流
GUI(圖形用戶管理)
一 GUI的組件和容器
Component(所有可顯示的元素):
1:它的直接功能子類---Button:對應(yīng)事件:java.awt.event.ActionEvent;
處理函數(shù):public void actionPerformed(ActionEvent e)
---TextFiled:對應(yīng)事件:java.awt.event.ActionEvent;
處理函數(shù):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(在頂級窗口內(nèi)部的小窗口)
---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中的布局,不必直接設(shè)置Component位置和大小
---每個(gè)Container都有一個(gè)布局管理器對象,當(dāng)容器需要對某個(gè)組件進(jìn)行定位活判斷其尺寸大小,進(jìn)行定位時(shí),就會(huì)調(diào)用其對應(yīng)的布局管理器,調(diào)用Container的setLayout改變對象
2: ?5中布局管理
1.FlowLayout(Panle默認(rèn)布局管理器)
---基本原理:逐行定位,從左到右,從上到下,一行排滿后拍下一行;不改變大小,按照原尺寸顯示;可設(shè)置:間距,行距,對齊方式;默認(rèn)居中對齊
---方法 (1) FlowLayout();居中對齊,水平,垂直間距默認(rèn)5
(2)FlowLayout(FlowLayout.LEFT);左對齊,默認(rèn)5
(3)FlowLayout(FlowLayout.RIGHT,20,40);
2.BorderLayout(Frame默認(rèn)布局管理器)---EAST
---WEST
---SOUTH
---NORTH
---CENTER
3.GridLayout(表格是布局)---把空間劃分成網(wǎng)格,每個(gè)格子大小相等,組件被添加到單元格中,左右,上下
4.CardLayout
5.GridBagLayout
三 GUI事件
1:事件處理原理:
---事件源(框架,控件)
---事件對象(鍵盤,鼠標(biāo),)
---監(jiān)聽器對象
---監(jiān)聽器
---目標(biāo)代碼
2:控件事件:用于獲取事件發(fā)生時(shí)控件的狀態(tài),然后把我們的操作,返回到指定控件
---ActionEvent
---ActionListener
3:鼠標(biāo)事件
(1)有哪些鼠標(biāo)事件:
---mouseClicked(MouseEvent e)
---mouseEntered(MouseEvent e)
---mouseExited(MouseEvent e)
---mousePressed(MouseEvent e)
---mouseReleased(MouseEvent e)
(2)鼠標(biāo)事件添加:
---給誰添加:Component(組件添加)
---添加的是什么:MouseListener:鼠標(biāo)事件監(jiān)聽對象
---怎么添加:c.addMouseListener(MouseListener l)
---添加以后咱么辦:調(diào)用MouseListener類里面的方法,處理對應(yīng)的鼠標(biāo)事件
(3)事件類體系:MouseListener()接口-->MouseAdapter()類(空實(shí)現(xiàn))-->我們的處理類(我們就不用實(shí)現(xiàn)所有的方法)
4:Window事件
5:鍵盤事件
各個(gè)事件的區(qū)別:
1:對控件進(jìn)行操作的時(shí)候,用控件時(shí)間(涉及控件邢臺(tái)的改變)
2:對框架/窗口進(jìn)行操作的時(shí)候,窗口事件
3:涉及繪圖,內(nèi)容改變的時(shí)候,用鼠標(biāo)/鍵盤事件
4:各個(gè)事件有一定的功能重合,怎么用自己選擇
四 GUI內(nèi)部類:就是直接在一個(gè)類的內(nèi)部直接聲明的類(和普通類聲明方法一樣,沒有任何區(qū)別)
作用:可以直接訪問包裝內(nèi)的成員變量和方法,因?yàn)閮?nèi)部類直接包含了外部類的引用
好處:清晰的組織代碼結(jié)構(gòu),邏輯更好,防止被其他類非法訪問
使用時(shí)機(jī):這個(gè)類就是為外部類服務(wù)的,不需要或者不允許別的類進(jìn)行訪問的時(shí)候
-----------------------------------------------
IO流
一:IO流的基本原理:
1:作用:讀寫數(shù)據(jù)
2:描述主體對象:當(dāng)前程序(就是流所在的代碼文件)
3:操作的對象:數(shù)據(jù)(計(jì)算機(jī)中所有的東西都是以001101的二進(jìn)制碼存在)
4:IO處理:轉(zhuǎn)成字符串輸出,轉(zhuǎn)成字符串打印到紙上:輸出流,打印流
5:效率處理:緩存流
二:流的分類:
1:輸入/輸出流---區(qū)別:是把外部數(shù)據(jù)導(dǎo)入當(dāng)前的程序,還是把當(dāng)前程序的數(shù)據(jù),導(dǎo)入到外部設(shè)備
2:字符/字節(jié)流---區(qū)別:每次讀寫數(shù)據(jù)塊大小的區(qū)別;直接流就是每次讀寫8位,需要按照字符系統(tǒng)(2個(gè)直接,Unicode-16)重新拼裝成字符字符流,就是直接按照字符系統(tǒng)指定的大小讀寫數(shù)據(jù)塊,少了一個(gè)拼裝過程
3:原始流/處理流---區(qū)別:直接用于在程序和設(shè)備中直接讀取數(shù)據(jù)的流;和不能在程序和設(shè)備中讀取數(shù)據(jù),只能按照目的處理前者從原始設(shè)備和程序中讀出的數(shù)據(jù)的流
三:4個(gè)原始流功能與方法:
1:InputStream(理由:一次讀取一個(gè)字節(jié))/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(一次寫入一個(gè)字節(jié))/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(一次讀取一個(gè)字符)/16
(1):read()
(2):read(char[] cbuf)
(3):read(char[] cbuf, int offset, int length)
(4):close()
(5):skip()
4:Writer(一次寫入一個(gè)字符)/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(序列化)
總結(jié)
以上是生活随笔為你收集整理的java生产者消费者gui_java理论之java--GUI(图形用户管理)与 IO/流的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java流的传递方式是_java中数据的
- 下一篇: c语言实现ftp网络应用程序,使用C语言