天天看點

java GUI 快速入門

java 中編寫 gui 有兩中工具包,分别為 awt、swing。

swing 是 awt 的拓展,swing 具有比 awt 豐富的元件和方法。

awt 和 swing 都能跨平台使用;awt 會随着不同的系統平台,ui 樣式會有所變化,swing 則不會,設計完畢後在所有平台下樣式一緻。

下面是一個視窗示例

java GUI 快速入門

建立一個視窗,要繼承 <code>frame</code>,同時會繼承 frame 中的一些方法;

frame 中:

super 方法可以設定視窗标題;

setsize 設定視窗大小,<code>(width,hight)</code>

setvisible 設定是否顯示視窗,true 顯示,false 隐藏

<code>setlayout(new flowlayout());</code>用于設定視窗布局;

<code>add(元件);</code> 用于向視窗添加元件,例如按鈕等。

我們來向視窗添加元件

在 main 方法中啟動視窗

效果

java GUI 快速入門

java 中,事件分為三個方面描述,

事件源:發生事件的對象

事件處理:委托事件處理模型

事件監聽者:負責處理事件

java GUI 快速入門

首先b監聽a,設定監聽的内容,并設定響應内容。

一旦a本身的狀态改變,就觸發c;

c執行d

媽媽跟兒子說,你作業做完了,媽媽就讓爸爸就給你削個蘋果吃。

媽媽:事件監控者

兒子:事件源

動作:做完作業

事件:爸爸削個蘋果給兒子

媽媽監控兒子,監控是否完成作業。設定作業完成後,觸發事件:削蘋果;

兒子做完作業,狀态變更,觸發事件;事件開始執行。

簡單來說 b 告訴 a ,如果 a 怎麼樣了,就去做一件事情c。

我們繼續利用上面的視窗,實作按鈕點選時,改變視窗背景顔色。

引入

實作接口

按鈕有個事件監聽器 <code>addactionlistener</code>,我們将要執行的工作 <code>actionperformed</code> 綁定進去。

當條件發生時,就會觸發此工作。

媽耶,我都不知道自己在說啥了。

c# 中,事件沒有那麼麻煩,也不需要這麼bb。。。

另外, actionevent ,有兩個常用方法

awt 中,主要有 6 中布局方式。

flowlayout 流式布局

預設布局,控件從上到下,從左到右地排序。

borderlayout 邊緣布局

自動停靠窗體邊緣,并且長寬随着窗體的變化。

java GUI 快速入門

gridlayout 網格布局

将容器分成若幹行和若幹列。

cradlayout 卡片布局

像撲克牌一樣,每張牌是一個控件,多個控件疊加起來,每次隻能檢視一個。

gridbaglayout 網格塊布局

null 采用坐标定位布局

建立一個窗體,并設定流式布局

繼承 frame 的窗體中,使用 setlayout方法 可以設定布局。

如圖是 gui 控件中常用的控件關系繼承圖。

java GUI 快速入門

元件分為容器(container)和控件。

容器又分為窗體(window)和面闆(panel)。

component 是所有元件的父類,component 常用方法如下

文本框(textfield)隻能顯示一行文本,文本域(textarea)則可以顯示、編輯多行文字。

文本框的構造函數如下

文本域的構造函數如下

文本控件的常用方法有

文本域(textarea)中,還具有以下兩個常用方法

文本框有兩個常用事件

actionevent事件

在文本框按Enter鍵時引發

注冊:<code>addactionlistener()</code> 接口:<code>actionlistener</code>

方法:<code>public void actionperformed(actionevent e)</code>

textevent事件

對文本輸入部件資料更改操作 (添加、修改、删除)

注冊: <code>addtextlistener()</code>

接口:<code>textlistener</code>

方法: <code>public void textvaluechanged(textevent e)</code>