《Java大學教程》—第10章 圖形和事件驅動程序
10.2 Swing程序包
AWT(Abstract Window Toolkit): 抽象窗口工具集。
依賴于本地操作系統的組件被稱為重量級(Heavy Weight)組件,因為它們都會大量使用系統資源。
組件名稱有Frame(框架)、Button(按鈕)、Label(標簽)等
Swing: 基于AWT類構建。
幾乎所有的組件都用Java編寫,而且所有代碼都是Swing程序包的一部分。用Java語言編寫的組件稱為輕量級(Light Weight)組件。
組件名稱都以J開頭,如JFrame、JButton、JLabel等。
Swing程序包和AWT程序包都是Java基礎類(Java Foundation Class, JFC)中的一部分。
補充說明:首先輕量級與重量級是一個相對的概念,主要是對應用框架使用方便性和所提供服務特性等方面做比較的。
輕量級組件都是純Java代碼開發的,具有良好的平臺移植性,不依賴于操作系統的支持,在所有的平臺上表現一樣,不直接使用操作系統的資源,
當然操作系統的資源依然是要占用的,只是系統資源的管理都由組件完成,使用組件的程序員不直接與操作系統的資源打交道。
重量級組件則每個類都會與操作系統中的一個對等資源相對應。
10.4 Java中的事件處理機制(event-handling)
事件處理器(event-handler)
自測題:
1。輕量級組件與重量級組件的不同。
依賴于本地操作系統的組件被稱為重量級組件,因為它們都會大量使用系統資源。
全部使用Java語言編寫的組件稱為輕量級組件,它們透過AWT使用系統資源,不會直接管理系統資源。
2。布局管理器的作用
3。FlowLayout管理器與BorderLayout管理器的不同
4。
a) JFrame組件的布局策略
b) JPanel組件的布局策略
5。一個名為SomeClass的類具有兩個按鈕組件,這兩個按鈕組件被按下時將會采取特定的動作。
a) 必要的import語句。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
b) 正確的頭部語句。
public class SomeClass extends JFrame implements ActionListener
c) 創建按鈕需要的Swing組件。
JButton
d) 對按鈕監聽鼠標單擊事件。
button1.addActionListener(this);
e) 哪個方法可以決定鼠標單擊按鈕時采取行動。
public void actionPerformed(ActionEvent e)
注: 實現可以參看PushMe.java
編程練習:代碼附件
1. PushMe.java RunPushMe.java
2. ChangingFacesGUI.java
這個我用的是Swing Designer完成的界面設計+手工修改了部分代碼,
優點:比原始版本簡潔
缺點:使用了anoynomous class,本書到這里還沒有講解;還用了enum類型,也是要到書的后面才講,這樣做就是為了更好的對比學習
3. MetricConverterGUI.java
實現了攝氏溫度與華氏溫度的轉換
最后加了兩個Panel是為了對齊前面的Panel
4. ReactorTesterGUI.java
也是采用Swing Designer完成的界面設計,還增加了MessageBox的使用。
補充1:MessageBox需要一個父組件,而ReactorTesterGUI并沒有在構造函數中實例化,所以不能使用。
而能使用的是contentPane,這個是在構造函數中實例化了,并且在使用之前已經聲明了。
父組件是為也確定MessageBox顯示的位置,結果是MessageBox會顯示在父組件的中間位置。
補充2:因為ReactorTesterGUI在構造函數中是無法實例化的,所以生成的組件并沒有直接放在frame的panel中,而是放在contentPane中。
contentPane是在ReactorTesterGUI的類中聲明了,再在構造函數中用setContentPane(contentPane)來替換JFrame自己的rootPane。
posted on 2016-08-30 21:38 zYx.Tom 閱讀(190) 評論(0) 編輯 收藏 所屬分類: 1.Java世界