国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java圖形化界面設(shè)計(jì)之容器(JFrame)詳解

Java圖形化界面設(shè)計(jì)之容器(JFrame)詳解

2021-02-07 12:12liujun13579 Java教程

這篇文章主要介紹了Java圖形化界面設(shè)計(jì)之容器(JFrame)詳解,條理清晰,依次介紹了Java基本類(JFC),AWT和Swing的區(qū)別,Swing基本框架,圖形化設(shè)計(jì)步驟以及組件容器的使用等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下

java圖形化界面設(shè)計(jì)——容器(jframe)

程序是為了方便用戶使用的,因此實(shí)現(xiàn)圖形化界面的程序編寫是所有編程語(yǔ)言發(fā)展的必然趨勢(shì),在命令提示符下運(yùn)行的程序可以讓我們了解java程序的基本知識(shí)體系結(jié)構(gòu),現(xiàn)在就進(jìn)入java圖形化界面編程。

一、java基本類(jfc)

java基本類(“javafoundationclasses”,jfc),由一些軟件包組成。這些軟件包主要包括下面一些應(yīng)用程序接口(api):

·抽象窗口工具集(awt)(1.1及以上版本)。

·swing構(gòu)件。

·java2d應(yīng)用程序接口(2dapi)。

·兼容程序接口。

上面列出的這些應(yīng)用程序接口可難會(huì)出現(xiàn)在多個(gè)軟件包中。例如:2dapi在java.awt和java.awt.image軟件包中都存在,雖然像java.awt.geom等一些特殊的軟件包也支持2dapi,但是大量的2dapi類都存在于java.awt軟件包中。

awt(1.1及以上版本)是jfc的核心。awt為jfc的構(gòu)成提供了以下基本結(jié)構(gòu):

·代理事件模型。

·輕量構(gòu)件。

·剪貼板和數(shù)據(jù)傳輸。

·打印和無(wú)鼠標(biāo)操作。

1、awtabstractwindowtoolkit(awt)抽象窗口工具包

awt是比較舊的雙介面函式庫(kù),它依然高度倚賴各作業(yè)平臺(tái)自身所具備的繪圖功效機(jī)能,且用一個(gè)比包容程式(wrapper)還小的設(shè)計(jì)還去除、吸收各作業(yè)平臺(tái)間的繪圖功能機(jī)能差異,以致java程式在跨平臺(tái)移攜后的繪圖呈現(xiàn)不夠一致,這使得awt遭受到眾多的批評(píng)。這意味著:awt的widget倚賴作業(yè)平臺(tái)自身原有的widget功效機(jī)能,程式設(shè)計(jì)師在開發(fā)撰寫時(shí)必須去了解各作業(yè)平臺(tái)在widget方面的差異性,如此便偏離了java程式語(yǔ)言最初的宗旨:跨平臺(tái)一致性。

awt由java.awt包提供,其提供了支持gui設(shè)計(jì)的類和接口,而又awt提供的組建一般稱之為重量級(jí)組件,其是由本地方法來(lái)實(shí)現(xiàn)其功能的。awt的特點(diǎn):

lawt中的圖形函數(shù)與操作系統(tǒng)所提供的圖形函數(shù)之間有著一一對(duì)應(yīng)的關(guān)系

lawt通過(guò)犧牲功能來(lái)實(shí)現(xiàn)其平臺(tái)無(wú)關(guān)性

lawt不能滿足圖形化用戶界面發(fā)展的需要

2、swing包

為了解決awt組件的缺陷,特別是跨平臺(tái)的問(wèn)題,在jdk1.2版本后提供了新的swing包,有javax.swing提供,swing是在awt的基礎(chǔ)上構(gòu)建的一套新的圖形界面組件,所有組建均是由java書寫,具有良好的跨平臺(tái)性,由于swing沒(méi)有使用本地方法實(shí)現(xiàn)圖形功能,因此提出把swing組件稱之為輕量級(jí)組件。

注意:swing組建是在awt基礎(chǔ)上建立的,而不是替代awt的,awt是根基,swing是發(fā)展。

swing組件幾乎都是輕量組件,那些頂層容器:窗體,小應(yīng)用程序、窗口和對(duì)話框除外。因?yàn)檩p量組件是在其容器的窗口中繪制的,而不是在自己的窗口中繪制的,所以輕量組件最終必須包含在一個(gè)重量容器中。因此,swing的窗體、小應(yīng)用程序、窗口和對(duì)話框都必須是重量組件,以便提供一個(gè)可以在其繪制swing輕量組件的窗口。

swing包括250多個(gè)類,其中有些是ui組件,有些是支持類。為了把ui組件和支持類區(qū)分開,swing組件的名字以j開頭。表1-1列出了swing提供的j組件。用斜體字表示的組件是awt組件的替代組件。

表1-1swingui組件

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  組件類         描述
  ─────────────────────────────────
  japplet java.applet.applet類的擴(kuò)展,它含有jrootpane的一個(gè)實(shí)例
  jbutton 能顯示文本和圖形的按鈕,它是awt按鈕組件的替代組件
  jcheckbox 能顯示文本和圖形的復(fù)選框,它是awt選擇組件的替代組件
  jcheckboxmenuitem 一個(gè)復(fù)選框菜單項(xiàng),它是awt的復(fù)選框菜單項(xiàng)組件的替代組件
  jcombobox 帶下拉列表的文本框,它是awt選擇組件的替代組件
  jcomponent 所有輕量j組件的基類
  jdesktoppane 內(nèi)部窗體的容器
  jdialog swing對(duì)話框的基類,它擴(kuò)展了awt dialot類
  jeditorpane 用于編輯文本的文本窗格
  jframe 擴(kuò)展java.awt.frame的外部窗體
  jinternalframe 在jdesktoppane中出現(xiàn)的內(nèi)部窗體
  jlabel 可顯示文本和圖標(biāo)的標(biāo)簽,它是awt標(biāo)簽組件的替代組件
  jlayeredpane 能夠在不同層上顯示組件的容器
  jlist 顯示選項(xiàng)列表的組件,它是awt列表組件的替代組件
  jmenu 菜單條中顯示的一個(gè)菜單,它是awt菜單組件的替代組件
  jmenubar 用于顯示菜單的菜單條,它是awt菜單條組件的替代組件
  jmenuitem 菜單項(xiàng),它是awt菜單項(xiàng)組件的替代組件
  joptionpane 顯示標(biāo)準(zhǔn)的對(duì)話框,如:消息和問(wèn)題對(duì)話框
  jpanel 通用容器,它是awt面板和畫布組件的替代組件
  jpasswordfield jtextfield的擴(kuò)展,使輸入的字符不可見(jiàn)
  jpopupmenu 彈出式菜單,它是awt彈出式菜單組件的替代組件
  jprogressbar 進(jìn)度指示器
  jradiobutton 單選按鈕,它是awt復(fù)選框組件的替代組件
  jrootpane 頂層容器,它包含一個(gè)玻璃窗格,一個(gè)層窗格,一個(gè)內(nèi)容窗格和一個(gè)可選的菜單條
  jscrollbar 滾動(dòng)條,它是awt滾動(dòng)條組件的替代組件
  jscrollpane 滾動(dòng)窗格,它是awt滾動(dòng)窗格組件的替代組件
  jseparator 水平或垂直分隔條
  jslider 滑桿
  jsplitpane 有兩個(gè)分隔區(qū)的容器,這兩個(gè)分隔區(qū)可以水平排列或者垂直排列且分隔區(qū)的大小能自動(dòng)調(diào)整
  jtabbedpane 帶選項(xiàng)卡的窗格
  jtable 表格
  jtableheader 表格頭
  jtextarea 用于輸入多行文本的文本域,它是awt文本域組件的替代組件
  jtestcomponent 文本組件的基類,它替代awt的textcomponent類
  jtextfield 單行文本域,它替代awt的單行文本域組件
  jtextpane 簡(jiǎn)單的文本編輯器
  jtogglebutton 兩種狀態(tài)的按鈕,它是jcheckbox和jradiobutton組件的基類
  jtoolbar 工具條
  jtooltip 當(dāng)光標(biāo)停留在一個(gè)組件上時(shí),該組件上顯示的一行文字
  jtree 用于按鈕層次組織數(shù)據(jù)的結(jié)構(gòu)控件
  jviesport 用于瀏覽可滾動(dòng)組件的視口
  jwindow 外部窗口,它是java.awt.window的擴(kuò)展
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  注:斜體字表示的是awt的替代組件

二、awt和swing的區(qū)別

awt是abstractwindowtoolkit(抽象窗口工具包)的縮寫,這個(gè)工具包提供了一套與本地圖形界面進(jìn)行交互的接口。awt中的圖形函數(shù)與操作系統(tǒng)所提供的圖形函數(shù)之間有著一一對(duì)應(yīng)的關(guān)系,我們把它稱為peers。也就是說(shuō),當(dāng)我們利用awt來(lái)構(gòu)件圖形用戶界面的時(shí)候,我們實(shí)際上是在利用操作系統(tǒng)所提供的圖形庫(kù)。由于不同操作系統(tǒng)的圖形庫(kù)所提供的功能是不一樣的,在一個(gè)平臺(tái)上存在的功能在另外一個(gè)平臺(tái)上則可能不存在。為了實(shí)現(xiàn)java語(yǔ)言所宣稱的"一次編譯,到處運(yùn)行"的概念,awt不得不通過(guò)犧牲功能來(lái)實(shí)現(xiàn)其平臺(tái)無(wú)關(guān)性,也就是說(shuō),awt所提供的圖形功能是各種通用型操作系統(tǒng)所提供的圖形功能的交集。由于awt是依靠本地方法來(lái)實(shí)現(xiàn)其功能的,我們通常把a(bǔ)wt控件稱為重量級(jí)控件。

swing是在awt的基礎(chǔ)上構(gòu)建的一套新的圖形界面系統(tǒng),它提供了awt所能夠提供的所有功能,并且用純粹的java代碼對(duì)awt的功能進(jìn)行了大幅度的擴(kuò)充。例如說(shuō)并不是所有的操作系統(tǒng)都提供了對(duì)樹形控件的支持,swing利用了awt中所提供的基本作圖方法對(duì)樹形控件進(jìn)行模擬。由于swing控件是用100%的java代碼來(lái)實(shí)現(xiàn)的,因此在一個(gè)平臺(tái)上設(shè)計(jì)的樹形控件可以在其他平臺(tái)上使用。由于在swing中沒(méi)有使用本地方法來(lái)實(shí)現(xiàn)圖形功能,我們通常把swing控件稱為輕量級(jí)控件。

awt和swing之間的基本區(qū)別:awt是基于本地方法的c/c++程序,其運(yùn)行速度比較快;swing是基于awt的java程序,其運(yùn)行速度比較慢。對(duì)于一個(gè)嵌入式應(yīng)用來(lái)說(shuō),目標(biāo)平臺(tái)的硬件資源往往非常有限,而應(yīng)用程序的運(yùn)行速度又是項(xiàng)目中至關(guān)重要的因素。在這種矛盾的情況下,簡(jiǎn)單而高效的awt當(dāng)然成了嵌入式j(luò)ava的第一選擇。而在普通的基于pc或者是工作站的標(biāo)準(zhǔn)java應(yīng)用中,硬件資源對(duì)應(yīng)用程序所造成的限制往往不是項(xiàng)目中的關(guān)鍵因素,所以在標(biāo)準(zhǔn)版的java中則提倡使用swing,也就是通過(guò)犧牲速度來(lái)實(shí)現(xiàn)應(yīng)用程序的功能。

簡(jiǎn)要的講:

awt是抽象窗口組件工具包,是java最早的用于編寫圖形節(jié)目應(yīng)用程序的開發(fā)包。

swing是為了解決awt存在的問(wèn)題而新開發(fā)的包,它以awt為基礎(chǔ)的。

三、swing基本框架

Java圖形化界面設(shè)計(jì)之容器(JFrame)詳解

上圖列舉了awt和swing的關(guān)系,也可以看出swing是繼承自awt的。本文主要利用swing來(lái)設(shè)計(jì)圖形化界面程序。

四、圖形化設(shè)計(jì)步驟

圖形化界面程序大家都使用過(guò),一般使用一個(gè)程序過(guò)程是:打開一個(gè)程序出現(xiàn)一個(gè)窗口或?qū)υ捒颍渲幸话阌胁藛巍⒐ぞ邫凇⑽谋究颉粹o、單選框、復(fù)選框等控件(組件也就是控件),用戶錄入相關(guān)數(shù)據(jù),點(diǎn)按相關(guān)菜單、按鈕,程序?qū)?shù)據(jù)進(jìn)行相關(guān)處理,并將處理后的數(shù)據(jù)顯示或者保存起來(lái),最后關(guān)閉程序。

用java編程的相關(guān)設(shè)計(jì)步驟來(lái)分解上面的的程序運(yùn)行過(guò)程如下圖所示:

Java圖形化界面設(shè)計(jì)之容器(JFrame)詳解

1、創(chuàng)建頂層容器

對(duì)應(yīng)于程序的初始顯現(xiàn)窗口,窗口中放入其它菜單、工具欄、文本框、按鈕等組件

頂層容器圖形化界面顯示的基礎(chǔ),其它所有的組件(控件)都是直接或間接顯示在頂層容器中的。在java中頂層容器有三種,分別是jframe(框架窗口,即通常的窗口)、jdialog(對(duì)話框)、japplet(用于設(shè)計(jì)嵌入在網(wǎng)頁(yè)中的java小程序)。

2、創(chuàng)建中間容器、組件

對(duì)應(yīng)于程序中出現(xiàn)的菜單、工具欄(中間容器)、文本框、按鈕、單選框、復(fù)選框等控件。

有很多swing組件可以使用,見(jiàn)前面的swingui組件表。

3、將組件加入容器

在java中創(chuàng)建組件后,還需要將組件放入相應(yīng)的容器,才能在頂層容器,如窗口中顯示出組件。

4、設(shè)置容器內(nèi)組件的位置

組件添加到容器中,還必須設(shè)置好組件的顯示位置,一般有兩種方法來(lái)設(shè)置組建的顯示位置,一是按照與容器的相對(duì)距離(以像素為單位),精確固定控件的位置;二是用布局管理器來(lái)管理組件在容器內(nèi)的位置。

5、處理組件所產(chǎn)生的事件

即用戶執(zhí)行選擇菜單、單擊按鈕等操作時(shí),就要執(zhí)行相應(yīng)的命令,進(jìn)行相關(guān)的程序處理,這就需要設(shè)置組件的事件。

五、組件容器的使用

java中組件容器包含頂層容器和中間容器。

在java中頂層容器有三種,分別是jframe(框架窗口,即通常的窗口)、jdialog(對(duì)話框)、japplet(用于設(shè)計(jì)嵌入在網(wǎng)頁(yè)中的java小程序),頂層容器是容納其它組件的基礎(chǔ),即設(shè)計(jì)圖形化程序必須要有頂層容器。

java中間容器是可以包含其它相應(yīng)組件的容器,但是中間容器和組件一樣,不能單獨(dú)存在,必須依附于頂層容器。

常見(jiàn)的中間容器有:

•jpanel:最靈活、最常用的中間容器。

•jscrollpane:與jpanel類似,但還可在大的組件或可擴(kuò)展組件周圍提供滾動(dòng)條。

•jtabbedpane:包含多個(gè)組件,但一次只顯示一個(gè)組件。用戶可在組件之間方便地切換。

•jtoolbar:按行或列排列一組組件(通常是按鈕)。

1、jframe框架窗口的使用

Java圖形化界面設(shè)計(jì)之容器(JFrame)詳解

以上是jframe的常用方法即說(shuō)明,下面舉例說(shuō)明。

實(shí)例1:直接定義jframe類的對(duì)象創(chuàng)建一個(gè)窗口

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// jframedemo1.java
import javax.swing.*;
//使用swing類,必須引入swing包
public class jframedemo1{
    public staticvoid main( string args[]) {
        //定義一個(gè)窗體對(duì)象f,窗體名稱為"一個(gè)簡(jiǎn)單窗口"   
        jframe f = new jframe("一個(gè)簡(jiǎn)單窗口");
        /*設(shè)置窗體左上角與顯示屏左上角的坐標(biāo),
離顯示屏上邊緣300像素,離顯示屏左邊緣300像素   */
        f.setlocation(300, 300);
        //f.setlocationrelativeto(null);本語(yǔ)句實(shí)現(xiàn)窗口居屏幕中央
        f.setsize(300,200);
        //設(shè)置窗體的大小為300*200像素大小
        f.setresizable(false);
        //設(shè)置窗體是否可以調(diào)整大小,參數(shù)為布爾值
        //設(shè)置窗體可見(jiàn),沒(méi)有該語(yǔ)句,窗體將不可見(jiàn),此語(yǔ)句必須有,否則沒(méi)有界面就沒(méi)有如何意義了
        f.setvisible( true);
        //用戶單擊窗口的關(guān)閉按鈕時(shí)程序執(zhí)行的操作
        f.setdefaultcloseoperation(f.exit_on_close);
    }
}

程序運(yùn)行結(jié)果如下圖所示:

Java圖形化界面設(shè)計(jì)之容器(JFrame)詳解

可以根據(jù)程序代碼的注釋,依次修改相應(yīng)的方法參數(shù)查看效果。

setdefaultcloseoperation(intoperation):設(shè)置用戶在此窗體上發(fā)起"close"時(shí)默認(rèn)執(zhí)行的操作。方法中的參數(shù)解釋如下:

l為“0”或do_nothing_on_close:

(在windowconstants中定義):不執(zhí)行任何操作;要求程序在已注冊(cè)的windowlistener對(duì)象的windowclosing方法中處理該操作。

比如實(shí)例程序代碼中更改為f.setdefaultcloseoperation(f.do_nothing_on_close);或者f.setdefaultcloseoperation(0),然后查看效果,可以發(fā)現(xiàn)窗口無(wú)法關(guān)閉,下面是相同用法,不再解釋了。

l為“1”或hide_on_close

調(diào)用任意已注冊(cè)的windowlistener對(duì)象后自動(dòng)隱藏該窗體。此時(shí)沒(méi)有關(guān)閉程序,只是將程序界面隱藏了。

可以打開任務(wù)管理器,可以看到一個(gè)叫“java.exe”的進(jìn)程(如果調(diào)試運(yùn)行了多個(gè)java程序,則會(huì)看到多個(gè)“java.exe”的進(jìn)程),如果此時(shí)用editplus測(cè)試程序,會(huì)發(fā)現(xiàn)當(dāng)單擊窗口的關(guān)閉按鈕關(guān)閉窗口后,卻無(wú)法再次對(duì)程序進(jìn)行調(diào)試,因?yàn)槌绦蚓€程沒(méi)有關(guān)閉,在任務(wù)管理器中關(guān)閉java.exe(如果有多個(gè)“java.exe”的進(jìn)程,則先都關(guān)閉掉,再來(lái)測(cè)試該問(wèn)題)基礎(chǔ)后,editplus才可以重新編譯改程序。

l為“2”或dispose_on_close

調(diào)用任意已注冊(cè)windowlistener的對(duì)象后自動(dòng)隱藏并釋放該窗體。但繼續(xù)運(yùn)行應(yīng)用程序,釋放了窗體中占用的資源。

l為“3”exit_on_close(在jframe中定義):使用systemexit方法退出應(yīng)用程序。僅在應(yīng)用程序中使用。結(jié)束了應(yīng)用程序。

默認(rèn)情況下,該值被設(shè)置為hide_on_close。

當(dāng)注釋掉實(shí)例中的f.setdefaultcloseoperation(f.exit_on_close);語(yǔ)句時(shí),起到的效果和f.setdefaultcloseoperation(f.hide_on_close);或者f.setdefaultcloseoperation(1);一樣。

實(shí)例2:創(chuàng)建類繼承jframe類創(chuàng)建一個(gè)窗口

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// jframedemo2.java
importjavax.swing.*;
//創(chuàng)建子類myframe繼承父類jframe
class myframeextends jframe{
    //定義構(gòu)造函數(shù),帶有四個(gè)參數(shù),用于設(shè)置窗口位置和大小
    myframe(int x,int y,int h,int w){
        super("一個(gè)簡(jiǎn)單窗口");
        //重寫父類方法,為窗口定義標(biāo)題
        /*以下的方法調(diào)用前面沒(méi)有添加對(duì)象名,也不可能添加,要?jiǎng)?chuàng)建的對(duì)象名稱是什么都不知道,也就不可能添加。但是創(chuàng)建對(duì)象后,對(duì)象自動(dòng)獲取這些初始值。*/
        setlocation(x,y);
        setsize(h,w);
        setresizable(false);
        setvisible(true);
        setdefaultcloseoperation(exit_on_close);
    }
}
publicclass jframedemo2{
    public static void main( string args[]) {
        //實(shí)例化類對(duì)象,提示設(shè)置參數(shù)
        myframe f = new myframe(300,300,300,200);
    }
}

上面的例子也可以不使用構(gòu)造函數(shù),可以和實(shí)例一方式一樣,代碼可以改為如下模式。

實(shí)例3:一個(gè)簡(jiǎn)單窗口

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// jframedemo3.java
importjavax.swing.*;
class myframeextends jframe{
    myframe(){
    }
}
publicclass jframedemo3{
    public static void main( string args[]) {
        myframe f = new myframe();
        f.settitle("一個(gè)簡(jiǎn)單窗口");
        f.setlocationrelativeto(null);
        f.setsize(300,200);
        f.setresizable(false);
        f.setvisible( true);
        f.setdefaultcloseoperation(3);
    }
}

總結(jié)

以上就是本文關(guān)于java圖形化界面設(shè)計(jì)之容器(jframe)詳解的全部?jī)?nèi)容。許多人說(shuō)java圖形化設(shè)計(jì)不重要,用的人也不多,事實(shí)上也確實(shí)如此。不過(guò),既然它如此簡(jiǎn)單,而且看起來(lái)挺有趣的,抽時(shí)間學(xué)一下也無(wú)妨。

原文鏈接:http://blog.csdn.net/liujun13579/article/details/7756729

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费观看一区二区三区毛片 | 亚洲国产成人精品久久 | 日本中文字幕在线观看 | 中文字幕高清视频 | 日韩久久精品 | 日韩看片 | 成人精品久久久 | 国产精品久久久久久亚洲调教 | 久久99国产精一区二区三区 | 日本在线视频一区 | 国产精品久久久久久久午夜片 | 91精品国产人妻国产毛片在线 | 久久蜜桃精品一区二区三区综合网 | 欧美成人精品一区二区三区 | 国产成人精品久久二区二区91 | 欧洲精品码一区二区三区免费看 | 农村人乱弄一区二区电影 | 91精品一久久香蕉国产线看观看新通道出现 | 欧美日韩在线观看一区二区 | 亚欧毛片 | 91精品国产综合久久久久久漫画 | a欧美| 亚洲一区二区三区免费观看 | 欧美日韩精品电影 | 亚洲国产精品久久久久秋霞蜜臀 | 97精品国产一区二区三区 | 一本一道久久a久久精品逆3p | 久久99综合久久爱伊人 | 九九九色| 久久久久高清 | 爱色av入口 | 一区视频在线 | 国产精品免费一区二区三区四区 | 四虎影视4hu4虎成人 | 97久久久久久久久久久久 | 欧美日韩久久久久 | 91免费版在线观看 | 亚洲精品久久久久久久久久久久久 | 免费大片黄在线观看 | 日韩精品在线播放 | 日韩一区二区三区视频 |