AWT部分
AWT (Abstract Window Toolkit),可用於Applet和application
功能:
使用者介面組
事件處理模型
圖形映像工具(形狀,顏色,字型)
布局管理器,可以進行靈活的視窗布局而與特定視窗的尺寸和螢幕解析度無關
資料傳送(剪貼和複製)
類和介面:
AWTEvent
Font
Componet--Container--(Panel--Applet;Window--Frame)
Graphics
MenuComponent
布局管理類
FlowLayout 一行接一行,是Panel,Applet的預設布局(Panel無法單獨顯示,必須加入某個容器)
BoradLayout 東南西北中,是Window,Frame,Dialog的預設布局,Frame是最上層視窗
GridLayout 格,行列,平均佔據容器的空間,一個構件只能在一格
CardLayout 牌,最上邊能看見
GridBagLayout 實用,可以占任意個行列
Frame.pack();緊湊排列,
import java.awt.event.*
XXX.addActionListener(new ButtonHandler());
class ButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
.......do something
}
}
同一個監聽器可以監聽兩個按鈕:
通過e.getActionCommand()傳回值判斷按下了哪個按鈕
事件類別目錄 描述資訊 介面名 方法
ActionEvent 啟用組件 ActionListener actionPerformed(ActionEvent)
ItemEvent 選擇某些項目(比如,複選框
。。。。還有很多個
事件適配器,為一些Listener介面(可能有多個方法)提供了適配器Adapter類。
通過繼承事件所對應的Adapter類,只需要重寫需要的類;
AWT組件庫:Button,Checkbox,CheckboxGroup,Choice(下拉式),Canvas畫布,建立自訂群組件,TextField(單行文本輸入),TextArea,List,Frame,Dialog,Filedialog,Menu(只能在MenuBar容器中),MenuBar(只能添加到Frame中)
Swing部分
AWT重量級,與具體平台相關,
Swing輕量級,在不同的平台上表現一致,並有能力提供本地視窗系統不支援的其他特性,純java,沒有本地代碼採用MVC模式
import javax.swing.*
類階層(兩個類型的組件):
頂層容器(JFrame,JApplet,JDialog,JWindow);註:一般以J開頭,J*****
輕量級組件
Swing組件都是AWT的Container類的直接子類或者間接;
組件除了可以使用文字,還可以使用表徵圖修飾自己;
swing開發流程:
1,引入Swing包
2,選擇“外觀和感覺”
3,設定頂層容器
4,設定按鈕和標籤
5,向容器中添加組件
6,在組件周圍添加邊界
7,事件處理
組件從功能上分:
頂層容器(JFrame,JApplet,JDialog,JWindow)
中間容器Panel,JScroll,JSplitPane,JToolBar
特殊容器JInternalFrame,JLayeredPane,JRootPane
基本控制項,實現人機互動的組件:JButton,JComboBox,JList,JMenu,JSlider,JtextField;
不可編輯資訊的顯示:JLabel,JProgressBar,ToolTip;
可編輯資訊的顯示:JColorChooser,JFileChoose,JFileChooser,Jtable,JtextArea
JComponent預設雙緩衝,提示資訊,setToolTips()
與AWT組件不同,Swing組件不能直接添加到頂層容器中,它必須添加到一個與Swing頂層容器相關聯的內容面板上,內容面板是頂層容器包含的一個普通容器,它是一個輕量級組件,基本規則:
把Swing組件放入一個頂層Swing容器的內容面板上
(方法一:frame.getContentPane().add(childComponent));
方法二: 建立一個JPanel或者JDesktopPane之類的中間容器,把組件添加到容器中,用setContentPane()
避免使用非Swing的重量級組件