AWT
AWT是用于創(chuàng)建圖形用戶界面的一個(gè)工具包
AWT中的組件可以分為兩大類
1.Component類AWT組件的父類通常被稱為組件可將其分為基本組件類和容器類
容器類通過(guò)Component的子類Container實(shí)例化對(duì)象
Container容器又分為兩種類型
Window和panel
Window類是不依賴其它容器而獨(dú)立存在的容器繁疤,它有兩個(gè)子類
Frame類和Dialog類
Panel它不能單獨(dú)存在只能存在其他容器中(window或其子類)
Panel對(duì)象代表了一個(gè)長(zhǎng)方形區(qū)域
2.MenuComponent類菜單相關(guān)組件的父類
如果想實(shí)現(xiàn)事件監(jiān)聽機(jī)制首先要定義一個(gè)類實(shí)現(xiàn)事件監(jiān)聽器的接口
window類型的窗口需要實(shí)現(xiàn)WindowListener接著通過(guò)addWindowListener()為事件源注冊(cè)事件監(jiān)聽對(duì)象
事件適配器
由于實(shí)現(xiàn)windowListener接口后有六個(gè)方法用不到所以采用事件適配器
需要繼承WindowAdapter類重寫某個(gè)方法
匿名內(nèi)部類實(shí)現(xiàn)事件處理
為了代碼的簡(jiǎn)潔
常用事件的分類
窗體事件
鼠標(biāo)事件
鍵盤事件keyEvent
動(dòng)作事件actionEvent
布局管理器
java.awt包中提供五種布局管理器
FlowLayout(流式布局管理器)
BorderLayout(邊界布局管理器)
GridLayout(網(wǎng)格布局管理器)
GridBagLayout(網(wǎng)格包布局管理器)
CardLayout(卡片布局管理器)
FlowLayout:
方法:
FlowLayout();組件默認(rèn)居中對(duì)齊
FlowLayout(int align);指定組件相對(duì)于容器的對(duì)齊方式
FlowLayout(int align,int hgap,int vgap);指定組件相對(duì)于容器的對(duì)齊方式和水平垂直間距
還可以使用該方法中提供的常量作為參數(shù)傳遞給構(gòu)造方法FlowLayout.LEFT,RIGHT,CENTER,
BorderLayout
它將容器劃分為五個(gè)區(qū)域:
東(EAST)南(SOUTH)西(WEST)北(NORTH)中(CENTER)
添加組件時(shí)需要使用add(Component comp,Object constrains)方法
GridLayout(網(wǎng)格布局管理器)
方法:
GridLayout();
GridLayout(int rows,int cols);指定容器的行數(shù)和列數(shù)
GridLayout(int rows,int colsint hgap,int vgap);水平垂直間距
GridBagLayout(網(wǎng)格包布局管理器)
是最靈活最復(fù)雜的布局管理器
使用步驟如下:
1.創(chuàng)建GridBagLayout布局管理器并使容器使用該布局管理器
GridBagLayout layOut = new GridBagLayout();
container.setLayOut(layOut);
2.創(chuàng)建GridBagConstraints對(duì)象(布局約束條件)拇涤,并設(shè)置該對(duì)象的相關(guān)屬性
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 1;
constraints.gridy = 1;
constraints.gridwidth = 1
constraints.gridheight = 1;
3.調(diào)用GridBagLayout對(duì)象的setConstraints ()方法建立GridBagConstraints對(duì)象和受控組件之間的關(guān)聯(lián)
layOut.setContraints(component,constraints);
4.向容器中添加組件
container.add(conponent);
GridBagConstraints對(duì)象可以重復(fù)使用只需要改變他的屬性即可矿酵,如果想在容器中添加多個(gè)組件則重復(fù)2,3,4
屬性:
gridx,gridy:設(shè)置組件左上角所在網(wǎng)格的橫向縱向索引如果將constraints.gridx 器一,constraints.gridy設(shè)置為GridBagConstraints.RELATIVE表示當(dāng)前組件緊跟在上一個(gè)組件后面
gridWidth涉枫,gridHeight
設(shè)置組件橫向縱向跨越幾個(gè)網(wǎng)格训堆,GridBagConstraints.REMAINER表示在其行或其列上為最后一個(gè)組件
fill:組件顯示區(qū)域大于組件需要的大小
.NONE
.HORIZONTAL:高度不變盒至,水平延伸
.VERTICAL:高度變缺谴,水平不變
.BOTH足夠大
weightx,weighty:
設(shè)置組件占領(lǐng)容器中多余的水平方向和垂直方向的空白比例(也稱權(quán)重)
如水平方向放置三個(gè)組件weight分別為1,2,3當(dāng)容器增加60個(gè)像素時(shí)這三個(gè)容器分別增加10,20,30默認(rèn)為0,不占據(jù)空間女责。
CardLayout
void first();
void last();
void previous();
void next();
void show();
不使用布局管理器
當(dāng)一個(gè)容器被創(chuàng)建后他們都有一個(gè)默認(rèn)的布局管理器Window漆枚,F(xiàn)rame和Dialog默認(rèn)管理器是BorderLayout。panel的默認(rèn)管理器是FlowLayout如果不采用布局管理器可以調(diào)用容器的setLayout(null)方法來(lái)取消在這種情況下必須調(diào)用容器中每個(gè)組件的setSize()和setLocation(),或者setBounds()來(lái)為組件在這些容器中定位抵知。
AWT繪圖
在java.awt包中提供了一個(gè)Graphics類墙基,他相當(dāng)于一個(gè)抽象畫筆
方法聲明:
void setColor(Color c)
... setFont(Font f);
... drawLine(int x1 ,int y1,int x2,int y2);端點(diǎn)繪線
... drawRect(int x1 ,int y1,int width, int height);矩形邊框
... drawOval(int x1 ,int y1,int width, int height);橢圓邊框
... fillRect(int x1 ,int y1,int width, int height);顏色填充矩形
... fillOval(int x1 ,int y1,int width, int height)软族;填充橢圓
... drawString(String str,int x,int y);寫入
Swing
Swing
JFrame
Swing組件都是JComponent的直接或間接子類
它和Frame一樣是一個(gè)獨(dú)立存在的頂級(jí)窗口不能放置在其他容器中
JFrame提供了關(guān)閉窗口的功能
JDialog
是Swing的另一個(gè)頂級(jí)窗口表示對(duì)話框
JDialog對(duì)話框可以分為兩種:擬態(tài)對(duì)話框和非擬態(tài)對(duì)話框
擬態(tài)對(duì)話框:指用戶需要等處理完對(duì)話框后才能繼續(xù)與其他窗口交互
非擬態(tài):相反
對(duì)話框的擬態(tài)和非擬態(tài)可以在創(chuàng)建Dialog對(duì)象時(shí)為構(gòu)造方法傳入?yún)?shù)來(lái)設(shè)置也可以調(diào)用setModal()方法來(lái)進(jìn)行設(shè)置
方法:
JDialog(Frame own);
JDialog(Frame own ,String title);
JDialog(Frame ,boolean modal);如果modal為true開啟擬態(tài)
文本組件
JTextArea文本域
JTextField文本框
共同父類JTextComponent是一個(gè)抽象類
按鈕組件
JButton
JCheckBox復(fù)選框
JRadioButton單選
都是抽象類AbstractButton的直接或間接子類
JComboBox下拉列表框
菜單組件
1.下拉式菜單
1.JMenu
2.JMenuItem
3.JMenuBar
順序JMenuBar--->JMenu(JMenuItem);
2.彈出式菜單
JPopupMenu和下拉式菜單一樣都要通過(guò)調(diào)用add()調(diào)用JMenuItem項(xiàng)它是默認(rèn)不可見的必須調(diào)用
show(Component invoker ,int x,int y);
中間容器
1.JPanel:他是一個(gè)無(wú)邊框不能移動(dòng),放大残制,縮小的關(guān)閉的面板
2.JscrollPane:帶有滾動(dòng)條的面板容器這個(gè)面板只能添加一個(gè)組件立砸,如果想添加多個(gè)將組件添加到JPanel中再將JPanel添加到JscrollPane中
方法:
JscrollPane();創(chuàng)建空面版
JscrollPane(Component view);創(chuàng)建一個(gè)指定組件的面板視圖大小出現(xiàn)滾動(dòng)條
JscrollPane(Component view,int vsbPolicy, int hsbPolicy);創(chuàng)建一個(gè)指定組件的面板并具有滾動(dòng)條策略的JscrollPane,后面兩個(gè)參數(shù)表示垂直水平的滾動(dòng)策略.
.HORIZONTAL_SCROLLBAR_AS_NEEDED默認(rèn)策略
.HORIZONTAL_SCROLLBAR_NEVER永不顯示
.HORIZONTAL_SCROLLBAR_ALWAYS一直顯示
setHorizontalScrollBarPolicy()指定水平滾動(dòng)策略
setVerticalScrollBarPolicy()垂直策略
setViewportView()設(shè)置在滾動(dòng)面板顯示的組件