java——GUI

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)面板顯示的組件


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末初茶,一起剝皮案震驚了整個(gè)濱河市颗祝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恼布,老刑警劉巖螺戳,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異折汞,居然都是意外死亡倔幼,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門爽待,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)凤藏,“玉大人,你說(shuō)我怎么就攤上這事堕伪∫咀” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵欠雌,是天一觀的道長(zhǎng)蹄梢。 經(jīng)常有香客問(wèn)我,道長(zhǎng)富俄,這世上最難降的妖魔是什么禁炒? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮霍比,結(jié)果婚禮上幕袱,老公的妹妹穿的比我還像新娘。我一直安慰自己悠瞬,他們只是感情好们豌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著浅妆,像睡著了一般望迎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凌外,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天辩尊,我揣著相機(jī)與錄音,去河邊找鬼康辑。 笑死摄欲,一個(gè)胖子當(dāng)著我的面吹牛轿亮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胸墙,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼哀托,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了劳秋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤胖齐,失蹤者是張志新(化名)和其女友劉穎玻淑,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呀伙,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡补履,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了剿另。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箫锤。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖雨女,靈堂內(nèi)的尸體忽然破棺而出谚攒,到底是詐尸還是另有隱情,我是刑警寧澤氛堕,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布馏臭,位于F島的核電站,受9級(jí)特大地震影響讼稚,放射性物質(zhì)發(fā)生泄漏括儒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一锐想、第九天 我趴在偏房一處隱蔽的房頂上張望帮寻。 院中可真熱鬧,春花似錦赠摇、人聲如沸固逗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抒蚜。三九已至,卻和暖如春耘戚,著一層夾襖步出監(jiān)牢的瞬間嗡髓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工收津, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饿这,地道東北人浊伙。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像长捧,于是被迫代替她去往敵國(guó)和親嚣鄙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 初步: AWT(Abstract Window Toolkit)包括了很多類和接口串结,用于Java Applicat...
    0843d07b95d5閱讀 293評(píng)論 0 0
  • Author:MWhiteUpdate time:17.10.31 AWT Swing組件組合界面 AWT進(jìn)行事件...
    MWhite閱讀 786評(píng)論 0 3
  • java是面向過(guò)程的編程語(yǔ)言:Java是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言哑子。Java 技術(shù)具有卓越...
    Java小辰閱讀 3,057評(píng)論 0 17
  • 本博客主要對(duì)java 的GUI相關(guān)知識(shí)進(jìn)行簡(jiǎn)單的介紹和總結(jié),整個(gè)博客按照創(chuàng)建一個(gè)java GUI的順序進(jìn)行介紹肌割,期...
    0error_0warning閱讀 79,274評(píng)論 16 57
  • 年少時(shí)候最先學(xué)會(huì)而且唱著很有感覺的一首歌卧蜓,是張國(guó)榮的《沉默是金》,我可以模仿的很像把敞,似足原聲弥奸,在K房里得到過(guò)不少朋...
    鄭州小強(qiáng)閱讀 623評(píng)論 0 1