




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第10章輸入與輸出10.1輸入/輸出流10.2Scanner類
10.3字節流10.4字符流10.5文件的基本操作
10.1輸入/輸出流(I/O流)
在Java中,通過不同輸入輸出設備(鍵盤、鼠標、內存、顯示器、打印機、網絡等)之間的數據傳輸抽象為流(Stream)。一個流可以理解為一個數據的序列。
輸入流(InputStream)表示程序從一個源讀取數據
輸出流(OutputStream)表示程序向一個目標寫入數據,程序可以通過流的方式與輸入輸出設備進行數據傳輸。
Java.io包(輸入/輸出包)包含了大部分輸入、輸出操作需要的類,這些流類代表了輸入源和輸出目標。10.1輸入/輸出流(I/O流)I/O流表示運行中的程序的數據輸入源或數據輸出目標。一個流可以表示許多不同類型的源和目標,鍵盤鼠標文件網絡01001110101輸入流運行程序輸入流(InputStream)輸出流(OutputStream)01001110101運行程序顯示器打印機文件網絡輸出流
字節流(ByteStreams):處理原始二進制數據。
字符流(CharacterStreams):處理字符數據,自動處理本地字符集的轉換。
緩沖流(BufferedStreams):通過減少對本機API的調用次數來優化輸入和輸出。
掃描和格式化(ScanningandFormatting):允許程序讀取和寫入格式化文本。
來自命令行的I/O(I/OfromtheCommandLine):描述了標準流和控制臺對象。
數據流(DataStreams):處理原始數據類型和String值的二進制輸入輸出。對象流(ObjectStreams):處理對象的二進制的輸入輸出。java.io包的I/O流類分類為:10.2Scanner類
10.2.1Scanner類的繼承關系與常用成員方法Scanner類常用于鍵盤的輸入,Scanner類的繼承關系如下:java.lang.Objectjava.util.ScannerScanner類常用成員方法10.2.2應用舉例運行結果【示例程序C10_1.java】鍵盤輸入字符串“Java123”,輸出空格之前的字符串“Java”。運行結果【示例程序C10_2.java】鍵盤輸入字符串“Java123”,輸出“Java123”。運行結果【示例程序C10_3.java】
利用nextLine()方法,從鍵盤輸入字符串“JavaABC”,輸出“JavaABC”。運行結果【示例程序C10_4.java】鍵盤輸入整數,浮點數,并輸出。10.3字節流
10.3.1InputStream類
程序使用字節流來執行
1個字節(8位
)的輸入和輸出,通常用來處理二進制數據。所有字節流類都來自輸入流
InputStream類和
輸出流OutputStream類,它們是一個抽象類是字節流的父類。繼承關系InputStream類的成員方法FileInputStream是InputStream的子類,文件字節輸入流可以從文件系統中的某個文件中獲得輸入字節,把它輸入到程序中。10.3.1FileInputStream類【示例程序C10_5.java】利用FileInputStream類,編程實現從文件t1.txt中讀取數據,輸出到屏幕。使用步驟:(1)創建一個FileInputStream流對象,綁定一個數據源文件;(2)調用read()方法讀取數據;(3)調用close()方法釋放資源。10.3.2OutputStream類繼承關系OutputStream類的成員方法運行結果FileOutputStream是OutputStream的子類,是文件字節輸出流。程序中的字節數據可以通過該流將字節數據輸出到某個文件中。10.3.3FileOutputStream類【示例程序C10_6.java】通過鍵盤輸入數據,利用FileOutputStream類將讀到的數據寫入文件t2.txt中。使用步驟:(1)創建一個FileOutputStream流對象,綁定一個目標文件;(2)調用write(c)方法寫數據到目標文件;(3)調用close()方法釋放資源。運行結果10.4字符流
符號是構成語言和程序的基本單位。Java語言不采用通常計算機語言系統所采用的ASCII代碼集,而是采用更為國際化的Unicode字符集。
ASCII字符集:字符表示一個字節(8比特),一個字符就是一個字節。例如:char類型占1個字節。Unicode編碼:字符表示兩個字節(16比特)一個字符就是二個字節。例如:char類型占2個字節。
為了實現與其他程序語言及不同平臺之間交互,Java提供16位的數據流(字符流)處理方案。字符流分為輸入字符流和輸出字符流,分別對應Reader和Writer類。10.4.1Reader類和Writer類繼承關系Reader類和Writer類是抽象類,是字符流的父類10.4.2FileReader類和FileWriter類FileReader類是Reader的子類,是文件字符輸入流。通過該流可以將某個文件中的數據按字符方法讀到運行的程序中。FileWriter類是Writer的子類,是文件字符輸出流。程序中的字符數據可以通過該流將字符數據輸出到某個文件中。【示例程序C10_7.java】
利用FileWriter類實現將程序中的字符串存儲到文件t3.txt。運行結果運行結果【示例程序C10_8.java】
利用FileReader實現讀取文件t3.txt的字符數據,并顯示在屏幕上。10.5文件的基本操作
在計算機系統中,需要長期保留的數據是以文件的形式存放在磁盤等外部存儲設備中。
文件的最基本的操作包括創建文件,查找文件、刪除文件,讀/寫文件,設置文件的讀寫位置,文件的打開和關閉等操作。
目錄作為管理文件的特殊機制,是為了對文件實施有效的管理,提高文件的存取速度,方便用戶對文件的操作。一個目錄(也稱文件夾)包含文件和目錄。同類文件保存在同一目錄下可以簡化文件的管理,提高工作效率。10.5.1File類java.io.File類的父類是java.lang.Object。File類以抽象的方式代表文件名和目錄路徑名,是專門用來管理磁盤文件和目錄的。每個File類的對象表示一個文件或目錄,其對象屬性中包含了文件或目錄的相關信息,如文件或目錄的名稱、文件的長度、目錄中所含文件的個數等。該類主要用于文件和目錄的創建、查找、刪除等操作。【示例程序C10_9.java】
獲取文件C10_8.java的文件名、長度、大小等特性。運行結果【示例程序c10_10.java】
顯示"F:\eclipse-workspace\ch10"文件夾的內容。運行結果10.5.2File類配合字節流完成文件的讀/寫操作1.利用字節文件輸入流完成文件的讀取步驟:FilefilePath=newFile(本地路徑)//創建或綁定一個數據源文件FileInputStreamin=newFileInputStream(filePath)//建立數據的輸入通道in.read();//讀取文件中的數據close()//釋放資源2.利用字節文件輸出流完成文件的寫入步驟:FilefilePath=newFile(本地路徑)//綁定一個數據源文件FileOutputStreamout=newFileOutputStream(filePath)//建立數據的輸入通道out.write();//寫入數據到文件close()//釋放資源【示例程序C10_11.java】
直接利用FileInputStream類和FileOutputStream類完成從鍵盤讀入數據寫入文件中,再從寫入的文件中讀出數據打印到屏幕上的操作。10.5.3File類配合字符流完成文件的讀/寫操作1.利用字符文件輸入流完成文件的讀取步驟:FilefilePath=newFile(本地路徑)//創建或綁定一個數據源文件FileReaderin=newFileReader(filePath)//建立數據的輸入通道in.read();//讀取數據close()//釋放資源2.利用字符文件輸出流完成文件的寫入步驟:FilefilePath=newFile(本地路徑)//綁定一個數據源文件
FileWriterout=newFileWriter(filePath)//建立數據的輸入通道out.write();//寫入數據close()//釋放資源
【示例程序C10_12.java】將data1.txt文件復制到data2.txt文件中。10.5.4隨機訪問文件文件存取方式:順序存取:只能從文件的起始位置向后順序讀/寫。隨機存取:通過文件位置指針,讀/寫任意位置的數據。java.io包提供的RandomAccessFile類可以實現對文件的隨機存取。構造方法有兩種:(1)?RandomAccessFile(Stringname,Stringmode):創建一個隨機訪問文件流,從具有指定名稱的文件中讀取或可選地寫入文件。(2)?RandomAccessFile(Filef,Stringmode):創建一個隨機訪問文件流,從file參數指定的文件中讀取或可選地寫入該文件。其中:mode參數指定打開文件的訪問模式,其含義如表所示。對文件位置指針的操作輸入操作:從文件指針處開始讀取字節,并使文件指針向前移動超過所讀取的字節。如果隨機訪問文件是在讀寫模式下創建的,那么輸出操作也可用。輸出操作:從文件指針開始寫入字節,并使文件指針向前移動,超過寫入的字節。
文件指針通過getFilePointer方法讀取,通過seek方法設置。RandomAccessFile類對象的文件位置指針遵循以下規則:(1)新建RandomAccessFile對象文件位置指針位于文件的開頭處。(2)每次讀/寫操作之后,文件位置指針都后移相應個讀/寫的字節數。(3)利用seek(?)方法可以移動文件位置指針到一個新的位置。(4)利用getPointer(?)方法可獲得本文件當前的文件位置指針。(5)利用length(?)方法可得到文件的字節長度。利用getPointer(?)方法和length(?)方法可以判斷讀取的文件是否到文件尾部。【示例程序C14_13.java】從鍵盤輸入五個整數并寫入F:/eclipse-workspace/ch10\t4.txt中,再從這個文件中隨機讀出其中的某個數(由鍵盤輸入確定),將它顯示在屏幕上,同時允許用戶對這個數進行修改。EclipseIDE顯示的第10章ch10工程中示例程序的創建位置第11章GUI設計概述及布局管理11.1GUI的基礎包11.2Swing組件11.3JFrame窗體11.4布局管理器11.5Jpanel容器11.1GUI的基礎包
圖形用戶界面(GraphicsUserInterface,GUI)為應用程序提供了一個圖形化的界面,實現人機交互。Java中構成圖形用戶界面的各種元素,稱為組件。組件分為容器類和非容器類組件兩大類:Java圖形界面的元素1.非容器類組件非容器類組件不能獨立存在,必須放在容器組件內使用。例如:單選按鈕、復選按鈕、下拉列表,文本框、文本區域,有命令類的按鈕、菜單等。2.容器組件容器組件是可以包含組件和其他容器的組件。容器中的布局管理器管理組件在容器組件中的可視化位置。用容器簡化圖形化界面的設計,以整體結構來布置界面。例如:一個窗體容器內部將包含許多界面成分和元素,其中某些界面元素本身也可能又是一個容器組件,這個容器組件再進一步包含它的界面成分和元素,依此類推就構成一個復雜整體圖形界面。構建GUI的Java包AWT(java.awt)和Swing(javax.swing)包是Java為GUI設計提供了一組用于構建圖形用戶界面(GUI)以及向Java應用程序添加豐富的圖形功能和交互性的工具類庫。Java.awt.Component(組件類)Java.awt.Container(容器)Java.awt.WindowJava.awt.FrameJava.awt.DialogJavax.swing.JComponentJavax.swing.JFrameJavax.swing.JDialogJavax.swing.JWindowAWT與Swing組件類的繼承關系(1)創建組件(Component):創建組成界面的各種元素,如建立容器組件和非容器組件對象,指定其大小等屬性等。(2)指定布局(Layout):使用某種布局策略,將該組件對象加入到某個容器中的指定位置。(3)響應事件(Event):定義圖形用戶界面的事件和各界面元素對不同事件的響應,
從而實現圖形用戶界面與用戶的交互功能。Swing組件構造應用程序的圖形界面實現步驟:javax.swing包中定義的組件可以分為重量級組件和輕量級組件。11.2Swing組件在任何用Swing構建的GUI中都必須至少有一個重量級組件(hevayweightcomponent)。重量級組件稱為頂級(TopLevel)容器組件。頂層容器組件屬于窗口(Window)類組件,例如:JFrame、JDialog、JWindow。Swing的重量級組件1.JFrame容器:是Java.awt包中的Frame類的子類,可以創建一個帶有標題和邊框的頂層窗體。2.JWindow容器:是Java.awt包中的Window類的子類,可以創建一個無標題欄,無窗口按鈕的頂層窗體。3.JDialog容器:是Java.awt包中的Dialog類的子類,可以創建一個對話框窗體,例如:在JFrame容器中,創建Dialog類對話窗體對象,當單擊“顯示自定義對話框”按鈕時,彈出對話框窗體信息。Swing的輕量級組件
輕量級組件(lightweightcomponent)是繼承JComponent抽象類的組件,是實現人機交互的基本組件,它們必須被放到重量級組件中才能顯示。這些組件可以分為下述幾類:1.中間容器。常常作為JFrame的中間容器嵌入在JFrame容器中。例如:JPanel(面板容器),JScrollPane(滾動條容器),JSplitPane(分隔容器),JTabbedPane(選項卡容器),JToolBar(工具欄容器)等。
(a)綠色為JPanel容器(b)JScrollPane滾動條容器
(c)JSplitPane分隔容器
(d)JTabbedPane
選項卡容器
JRootPane(根面板容器):每一個頂級容器內都含有根面板容器。JLayeredPane(分層面板容器):提供在若干層上添加組件的能力。JInternalFrame(內部窗體容器):支持在
JFrame
窗口內部顯示一個完整的子窗口,并提供了許多拖動、關閉、調整大小、標題顯示等功能。2.專用容器。在UI中起特殊作用的中間層。
JInternalFrame專用容器
3.基本組件。這些組件稱為非容器組件。JLabel(標簽),Jbutton(按鈕),JCheckBox(復選框),
JRadioButton(多選按鈕),JComboBox(下拉式列表),JList(列表),JTextField(文本框),JTextArea(文本域),JMenu(菜單)非容器組件基本組件分為三類:(1)不可編輯信息的顯示組件:JLabel,JProgressBar(進度條)等;(2)可編輯信息的顯示組件:JTable(表格),JTextArea,JTextField等;(3)對話框組件:JColorChooser(顏色選擇器),JFileChooser(文件選擇器)等。
JFrame容器組件的結構JFrame容器組件的結構1.根面板組件(JRootPane):JRootPane是在JFrame窗體創建時就默認添加進來的,是所有其他面板組件的父類,它負責管理JLayeredPane與glassPane。默認情況下,JRootPane可見且不透明的。2.玻璃面板組件(glassPane):
glassPane位于其它面板的頂層,就像在所有面板上覆蓋了一層完全透明的玻璃,該面板總是存在的,默認情況下,glassPane是透明的且不可見的,可用于接收鼠標事件和在其他組件上繪圖。JRootPane的組成11.3JFrame容器組件
3.分層面板組件(JLayeredPane):JLayeredPane位于
JRootPane上面,再次覆蓋JFrame的整個表面。JLayeredPane包含JMenuBar和contentPane,是它們的直接父類,也是添加到contentPane中的所有組件的祖父類。若添加contentPane和JMenuBar到JLayeredPane,則JMenuBar會被添加到JLayeredPane的頂部,剩下的部分被contentPane填充。
JLayeredPane分為很多層,每一層都相當于一個容器組件,通過JLayeredPane對組件的重疊管理,我們可以設計出相互重疊的內部窗體組件。默認情況下,JLayeredPane是透明的且可見的。
JLayeredPane分層說明如下:DEFAULT_LAYER:默認層(標準層)。大部分組件都在這里。這是最下面的一層。PALETTE_LAYER:調色板層。位于默認層之上。對于浮動工具欄和調色板非常有用,因此它們可以被放置在其他組件的上方。MODAL_LAYER:模式層。用于模態對話框的層。它們將出現在容器中任何工具欄、調色板或標準組件的頂部。POPUP_LAYER:彈出層。顯示上面的對話框。這樣與組合框、工具提示和其他幫助文本相關聯的彈出窗口將出現在生成它們的組件、面板或對話框的上方。DRAG_LAYER:拖動層。當拖動一個組件時,將其重新分配到拖動層可以確保它位于容器中其他所有組件之上。當完成拖動時,它可以被重新分配到它的正常層。
4.內容面板組件(contentPane):contentPane是LayeredPane內的一層,默認情況下,contentPane是可見且不透明的,我們創建的JFrame窗體,實際上看到的是contentPane中的內容。內容面板組件在窗體組件中起著工作區的作用,通常我們會將其它組件放在contentPane上。5.菜單欄組件(JMenuBar):
JMenuBar是可選項。JRootpaneglassPane(透明的面版)
JLayeredPane(管理菜單與內容窗格)JMenuBar(菜單欄,可選項)
contentPane(內容窗格)組件一般添加到contentPane中主要功能是它或以捕獲JFrame上的任何事件。例如:攔截鼠標的移動例如:frame=newJFrame();JLabellb=newJLabel(“標簽");frame.getContentPane().add(lb,BorderLayout.CENTER);1.JFrame類的繼承關系如下:
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Frame
javax.swing.JFrame
JFrame繼承原有的AWT中的Frame類;JFrame類窗體組件類結構
JFrame類常用的構造方法:JFrame():構造一個初始不可見的新窗體;JFrame(String):用指定的標題創建一個新的初始不可見的窗體。3.JFrame類常用的成員方法成員方法描述所屬類setSize(intwidth,intheight)設置窗體的寬與高,單位為像素WindowsetBackground(Colorc)參數c設置窗體的背景顏色ComponentsetLocation(intx,inty)設置組件的顯示位置WindowsetLocation(pointp)
用point來設置組件的顯示位置WindowsetLocationRelativeTo(null)窗口居屏幕中央WindowsetVisible(booleanb)根據參數b的值顯示或隱藏此組件。Windowadd(Componentcomp)向容器中增加組件ContainersetLayout(LayoutManagermgr)設置此容器的布局管理器。Containerpack()
調整窗口大小,使其適應組件的大小和布局。WindowsetTitle()設置窗體標題FramesetBounds(int
x,int
y,int
width,int
height)移動并調整該組件的大小。WindowgetContentpane()返回此窗體的contentPane對象JFramesetDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)設置同步開關,關閉窗體的同時,終止程序的運行。JFrame
JFrame容器的使用創建一個簡單JFrame窗體需要完成:創建一個JFrame窗體對象,修改窗體外觀,設置窗體是否可見,在窗體內添加組件等步驟。1.創建一個JFrame窗體對象。用JFrame類常用的構造方法來創建。JFrame(); //創建一個無標題的窗體JFrame(Stringtitle);//創建一個有標簽的窗體2.修改窗體外觀。包括:設置窗體標簽、窗體位置、窗體的大小及窗體的背景顏色等。setTitle(Stringtitle); //設置窗體標簽setLocation(intx,inty); //設置窗體位置setSize(intwidth,intheight); //設置窗體的大小setBounds(intx,inty,intwidth,intheight);//重新調整窗體的位置和大小getContentpane();//返回此窗體的contentPane對象setBackground(ColorbgColor); //設置此窗體的背景顏色
設置窗體是否可見。窗體在默認情況下是不可見的setVisible(booleanb);//設b為true,則窗體可見4.添加組件到窗體上
窗體是圖形用戶界面中頂級容器組件,它可以容納其他多個容器組件,也可以容納多個非容器組件。不能把組件直接添加到JFrame窗體上,要先獲得窗體的內容面板(ContentPane),然后把組件添加到內容面板上。Java中組件放置在ContentPane的什么位置,不是通過坐標控制,而是由“布局管理器”來決定
【示例程序C11_1.java】創建一個JFrame窗體,要求:窗體標簽是“這是一個JFrame”,窗體的背景是黃顏色,窗體距屏幕左面100個像素,距屏幕上方50個像素,窗體的寬度為400像素,高度為200像素,程序運行后窗體是可見的。400像素200像素(0,0)(100,50)yx100像素50像素窗體距屏幕左面100個像素,距屏幕上方50個像素,窗體的寬度為400像素,高度為200像素。11.4布局管理器本章實現的布局BorderLayoutGridLayoutFlowLayoutCardLayoutJava在布局管理上面采用了容器和布局管理相分離的方案。也就是說,容器只管將組件放入其中,而不管這些組件放置在容器中的位置和大小,容器中所有組件的布局(位置和大小)由布局管理器來控制。
Java語言中提供了FlowLayout(流式布局)、BorderLayout(邊界布局)、GridLayout(網格布局)、CardLayout(卡片布局)和GridBagLayout(網格袋布局)、BoxLayout(箱式布局)、GroupLayout(分組布局)、SpringLayout(彈性布局)等多種布局管理器。每種容器都有自己缺省的布局管理器。
如果不希望使用缺省的布局管理器,則可使用所有容器的父類Container的setLayout()方法來改變缺省的布局管理器。
java.awt.BorderLayout類是java.lang.Object類的直接子類。BorderLayout是JFrame的內容面板ContentPane默認的布局模式。BorderLayoutBorderLayout類有兩個構造方法,分別是:(1)BorderLayout()方法。用于創建一個各組件間的水平、垂直間隔均為0的BorderLayout類的對象;(2)BorderLayout(inthgap,intvgap)方法。用于創建一個各組件間的水平間隔為hgap、垂直間隔為vgap的BorderLayout類的對象。NORTH和SOUTH組件可以在水平方向上拉伸,而EAST和WEST組件可以在垂直方向上拉伸,CENTER組件在水平和垂直方向上都可拉伸,從而填充所有剩余空間。如果某個區域沒有分配組件,則其他組件可以占據它的空間。BorderLayout五個區域的位置常量:BorderLayout.NORTH//容器的北邊BorderLayout.SOUTH//容器的南邊BorderLayout.WEST//容器的西邊BorderLayout.EAST//容器的東邊BorderLayout.CENTER//容器的中心BorderLayout僅指定了五個區域的位置,如果容器中需要加入的組件超過五個,就必須使用容器的嵌套或改用其他的布局策略。
【示例程序C11_2.java】創建一個窗體,使用BorderLayout布局模式,在窗體中添加5個按鈕組件,按鈕的標簽是North、South、East、West、Center。運行結果
java.awt.FlowLayout類是java.lang.Object類的直接子類。FlowLayout的默認布局策略是按照加入容器中組件的先后順序從左向右排列,當一行排滿之后就轉到下一行繼續從左至右排列,每一行中的組件都居中排列。當容器被重新設置大小后,則布局也將隨之發生改變。各個組件大小不變,而其相對位置會發生變化FlowLayout1.FlowLayout類有三個構造方法:(1)?FlowLayout(?)。構造一個新的FlowLayout,默認組件居中對齊的,組件之間水平和垂直間隙是5個像素(2)?FlowLayout(intalign)。構造一個新的FlowLayout,按照align值確定對齊方式,默認是組件之間水平和垂直間隙是5個像素,參數align值可以設定為0、1、2、3、4,其意義如下:0或FlowLayout.LEFT,
組件左對齊1或FlowLayout.CENTER,組件居中對齊2或FlowLayout.RIGHT,組件右對齊3或FlowLayout.LEADING,每一行組件都應該對齊到容器方向的前沿,例如,在從左到右的方向中向左對齊。4或FlowLayout.TRAILING,每行組件應該對齊到容器方向的后緣,例如,在從左到右的方向中向右對齊。如果是0、1、2、3、4之外的整數,則為左對齊(3)?FlowLayout(intalign,inthgap,intvgap)方法。用于創建一個既指定對齊方式,又指定組件間間隔的FlowLayout類的對象。參數align作用及取值同上;參數hgap指定組件間的水平間隔;vgap指定組件間的垂直間隔;間隔單位為像素點值。2.FlowLayout類的常用成員方法如下:voidsetAlignment(intalign):設置此布局的對齊方式。voidsetHgap(inthgap):設置組件之間以及組件與Container的邊之間的水平間隙。voidsetVgap(intvgap):設置組件之間以及組件與Container的邊之間的垂直間隙對于一個原本不使用FlowLayout布局編輯器的容器,若需要使用該布局策略,可以用setLayout(newFlowLayout(?))方法設置。該方法是所有容器的父類Container的方法,用于為容器設定布局。
【示例程序C10_3.java】
在JFrame窗體的內容面板上添加三個按鈕,使用FlowLayout布局管理,指定對齊方式及間隔方方式。align=0的情況
align=1的情況
圖(a)FlowLayout(0)
圖(b)FlowLayout(1)運行結果
java.awt.CardLayout類是java.lang.Object類的直接子類。CardLayout的布局方式是將每個組件看成一張卡片,如同撲克牌一樣將組件堆疊起來,而顯示在屏幕上的每次只能是最上面的一個組件,這個被顯示的組件將占據所有的容器空間。當容器第一次顯示時,第一個添加到CardLayout的組件為可見組件。程序中可通過他的方法選擇顯示其中的卡片。1.CardLayout類有兩個構造方法:(1)CardLayout(?)方法。使用默認(間隔為0)方式創建一個CardLayout(?)類對象。(2)CardLayout(inthgap,intvgap)方法。使用hgap指定的水平間隔和vgap指定的垂直間隔創建一個CardLayout(?)類對象。CardLayout2.CardLayout類的常用成員方法成員方法說
明first(Containercontainer)顯示container中的第一個卡片last(Containercontainer)顯示container中的最后一個卡片next(Containercontainer)顯示下一個卡片previous(Containercontainer)顯示上一個卡片
【示例程序C11_4.java】
在JFrame窗體的內容面板上添加三個按鈕,使用CardLayout布局管理方式,顯示第二張卡片。運行結果GridLayoutjava.awt.GridLayout類是java.lang.Object類的直接子類。GridLayout的布局策略是把容器分成大小相等的矩形,一個矩形中放置一個組件,而每個組件按添加的順序從左向右、從上向下地占據這些網格。當改變容器大小后,其中的組件相對位置不變,但大小改變。1.GridLayout類的三個構造方法:(1)?GridLayout(?)。創建一個1行1列的GridLayout布局。(2)?GridLayout(introws,intcols)方法。創建一個具有rows行、cols列的GridLayout布局。(3)?GridLayout(introws,intcols,inthgap,intvgap)。按指定的行數rows、列數cols、水平間隔hgap和垂直間隔vgap創建一個GridLayout布局。2.GridLayout類常用的成員方法方法說明getColumns()獲取此布局中的列數。getHgap()獲取組件之間的水平間距getRows()獲取此布局中的行數。getVgap()獲取組件之間的垂直間距removeLayoutComponent(Componentcomp)從布局移除指定組件setColumns(intcols)將此布局中的列數設置為指定值setHgap(inthgap)將組件之間的水平間距設置為指定值setRows(introws)將此布局中的行數設置為指定值setVgap(intvgap)將組件之間的垂直間距設置為指定值toString()返回此網格布局的值的字符串表示形式
【示例程序C11_5.java】
在JFrame窗體的內容面板上添加4個帶標簽的按鈕,使用GridLayout的布局。運行結果BoxLayoutjavax.swing.BoxLayout類是java.lang.Object類的直接子類,BoxLayout是通用布局管理器,可以將組件左到右水平排列放置,也可以將它們從上到下垂直排列放置。1.BoxLayout類的構造方法:BoxLayout(Containertarget,intaxis)
創建一個將沿給定軸放置組件的布局管理器。其中,target是容器對象;axis指明target中組件的排列方式,axis參數的值如下:BoxLayout.X_AXIS:指定組件從左到右水平排列放置;BoxLayout.Y_AXIS:指定組件從上到下垂直排列放置;BoxLayout.LINE_AXIS:根據目標容器的ComponentOrientation屬性確定的文本行方向放置組件;BoxLayout.PAGE_AXIS:根據目標容器的ComponentOrientation屬性確定的文本行在頁面中的流向來放置組件。2.BoxLayout類常用的成員方法getAxis():返回用于布局組件的軸。getLayoutAlignmentX(Containertarget):返回容器沿X軸的對齊方式。getLayoutAlignmentY(Containertarget):
返回容器沿Y軸的對齊方式getTarget():返回使用此布局管理器的容器。
【示例程序C11_6.java】
在JFrame窗體的內容面板上添加2個帶標簽的按鈕,使用BoxLayout.Y_AXIS的垂直布局。
【示例程序C11_7.java】
在JFrame窗體的內容面板上添加2個帶標簽的按鈕,使用BoxLayout.LINE_AXIS的布局。Box是一個輕量級容器組件,他的默認布局是BoxLayout,而且只能是這個布局。每一個Box容器組件只能按照水平或垂直方式排列。Box類提供4種不可見組件可以填充其他組件之間空隙。Box
類繼承關系如下:java.lang.Objectjava.awt.Componentjava.awt.Containerjavax.swing.JComponentjavax.swing.Box1.Box類的構造方法:Box(int
axis)創建一個沿指定軸放置組件的Box布局管理器。其中axis
可以是
:BoxLayout.X_AXIS、
BoxLayout.Y_AXIS、BoxLayout.LINE_AXIS
或
BoxLayout.PAGE_AXIS。Box容器組件的BoxLayout布局2.Box類的常用的成員方法類型方法說明static
ComponentcreateGlue()創建一個不可見的"glue"組件,其可見組件有一個最大寬度(對于橫向box)或高度(對于縱向box)的Box,該組件可能很有用。static
BoxcreateHorizontalBox()創建一個從左到右顯示其組件的
Box。static
ComponentcreateHorizontalGlue()創建一個水平方向膠狀的不可見glue組件,用于撐滿水平方向剩余的空間static
ComponentcreateHorizontalStrut(int
width)創建一個不可見的、固定寬度的Strut組件。static
ComponentcreateRigidArea(Dimension
d)創建一個固定寬高的不可見組件rigidAreas組件。static
BoxcreateVerticalBox()創建一個從上到下顯示其組件的
Box。static
ComponentcreateVerticalGlue()創建一個垂直方向膠狀的不可見glue組件,用于撐滿垂直方向剩余的空間static
ComponentcreateVerticalStrut(int
height)創建一個不可見的、固定高度的Strut組件。3.Box
類可以創建不可見組件Glue、Struts和
RigidArea,不可見組件的作用是:
Glue:Glue組件水平或垂直方向將兩邊的組件擠到容器的兩端。例如:firstComponent組件和secondComponent組件為水平方向排列,Glue水平方向設置組件:container.add(firstComponent);container.add(Box.createHorizontalGlue());container.add(secondComponent);Glue組件樣式②Strut:Strut組件將兩端的組件按水平或垂直方向指定的大小分開。例如:firstComponent組件和secondComponent組件為水平方向排列,Strut水平方向指定組件間隔為x像素:container.add(first
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國廣州跨境電商進口合同
- 2025租賃合同的效力如何
- 畢業大學生勞動合同
- 2025建筑工程混凝土班組勞務分包合同
- 工程施工承包協議書范本
- 廢舊物品買賣合同范本
- 個人房屋油漆裝修承攬合同
- 離婚財產分割協議書樣書
- 2025魚塘租賃合同版
- 2025企業合同中涉及商業秘密保護條款
- 2025年合肥興泰金融控股(集團)有限公司招聘23人筆試參考題庫附帶答案詳解
- GB/T 14506.9-1993硅酸鹽巖石化學分析方法五氧化二磷的測定
- 與食品經營相適應的主要設備設施布局和操作流程文件
- FDS軟件介紹及實例應用
- 《新聞攝影教程(第五版)》第七章 新聞攝影瞬間的獲得
- 《物權法(第四版)》第八章 用益物權及特許物權
- 【國企】火力發電工程建設安全標準化圖冊230P
- 環境規劃與管理概述課件
- 撫州市崇仁縣鄉鎮街道社區行政村統計表
- 工程甲方指令單
- 扒胎機的使用
評論
0/150
提交評論