Welcome to Yumao′s Blog.
T-ELTS Project Day01
====================
1. Swing Java 的圖形用戶界面
2 學習Swing
3 簡單工廠方法, 用來封裝複雜的對象創建過程, 提供簡單的方法界面
4 包中資源的加載
5 開發任務
1. Swing Java 的圖形用戶界面
1) AWT 使Java成功技術 : Applet
AWT 具有強大的繪圖功能
AWT 的應用控件很少(按鈕, 菜單)
AWT 時候開發圖形, 不適合開發應用
2) Swing 是利用AWT繪圖功能, 完整的重新繪製了一套控件系統
包括: 表格, Tree, 等
Swing適合寫應用軟件
由於Windows對Swing支持不好, 很少用Swing開發桌面應用程序
很少企業 需要Swing人才
3) 學習建議, 了解Swing, 不必深究!
4) SWT 來自IBM 全新的GUI 系統, 包含少量的C代碼, 提供全部
平台的支持. Swt基本實現了跨平台, 代表產品: Eclipse
使用的企業不是很多
2 學習Swing
1) 簡單窗口
JFrame 代表有框的窗口, 中必須放置一個面板
JPanel 代表空白矩形區域面板, 在面板上可以添加控件/繪製圖形
2) 圖片加載:
Class 提供 getResource 方法, 從package中加載
JFrameDemo.class.getResource("img.png");
任務: 創建一個窗口, 在裡面顯示一張圖片
3) 布局管理 組件在容器(面板) 中的組件(Button)位置和大小
A 空布局 (絕對位置布局) 絕對布局管理, 是指定位置和寬高的布局
JFrame (w:574, H:390)
|-- JPanel (W:568, H:357)
|-- JButton OK (x:369 ,y:327 , w:92 ,H:21 )
|-- JButton Cancel (x:466 ,y:327 , w:92 ,H:21 )
B 布局管理器(相對位置布局, 組件的大小和位置有布局管理器控制)
BorderLayout (邊框布局)
將一個面板,分為東南西北中,每個位置只能放一個控件
中會自動的向其他的四個方法填充
----------------------------
| 北(North) |
|--------------------------|
| | | |
| | 中 | |
| 西 | Center | 東 |
| | | |
|--------------------------|
| 南(South) |
----------------------------
FlowLayout (流布局)
JPanel 的默認布局是FlowLayout
多個元素順序排序, 一行滿了, 排下一行
----------------------------
| [OK][OK][OK][OK][OK][OK] |
| [OK][OK][OK] |
| |
----------------------------
GridLayout 表格布局,
指定行數,列數. 元素按照等寬的行列表格進行布局.
複雜布局 布局套布局實現複雜界面布局管理.
3 簡單工廠方法, 用來封裝複雜的對象創建過程, 提供簡單的方法界面
4 包中資源的加載:
Class 實例獲得: a. String.class
b. str.getClass()
c. Class.forName("java.lang.String")
1) 獲得類的Class實例.
2) 利用Class實例的方法 getResource() 方法獲得資源
的URL, 可以進一步打開流
如: 類 MenuFrame.class 的同包中有圖片title.png
URL url = getClass().getResourse("title.png")
URL url = MenuFrame.class.getResourse("title.png")
其中"title.png" 表示相對路徑訪問, title.png和Class
在同一個包下, 如果參數以"/" 表示絕對路徑, 訪問其中"/"
CLASSPATH的根, 如:"/com/tarena/elts/gui/title.png"
3) 打開圖片 ImageIcon ico = new ImageIcon(url);
4) 可以利用InputStream in = url.openStream(); 打開為流
5) 從package(classpath 上)中 打開文本文件
new BufferedReader(new InputStreamReader(
getClass().getReaource("test.txt").openStream()))
5 開發任務:
1) 創建界面 com.tarena.elts.LoginFrame
com.tarena.elts.MenuFrame
com.tarena.elts.ExamFrame
2) 創建實體對象: com.tarena.elts.entity.Question
com.tarena.elts.entity.User
其中: User 代表系統登錄用戶
Question 代表試題庫中的試題
3) 創建值對象: com.tarena.elts.entity.ExamInfo
com.tarena.elts.entity.QuestionInfo
其中: ExamInfo 代表考試狀態信息
QuestionInfo 代表用戶考卷上的試題, 包含題目,用戶答案和試題序號
4) 如果沒有思路想法就通過練習案例學習想法.