IntelliJ IDE 開(kāi)發(fā)Java GUI 入門(mén)

本博客主要對(duì)java 的GUI相關(guān)知識(shí)進(jìn)行簡(jiǎn)單的介紹和總結(jié)诡曙,整個(gè)博客按照創(chuàng)建一個(gè)java GUI的順序進(jìn)行介紹寸士,期間穿插講解用到的java Swing的布局捡遍、控件等相關(guān)知識(shí)。本博客所進(jìn)行的講解及工程的創(chuàng)建等陨享,都是基于Intellij IDEA進(jìn)行操作的。

轉(zhuǎn)載請(qǐng)注明出處...雖然感覺(jué)沒(méi)人會(huì)用這個(gè)技術(shù)吧...

?一钝腺、創(chuàng)建Gradle管理的java工程

?1.在Intellij IDEA的首頁(yè)抛姑,選擇Create New Project

首頁(yè)選擇創(chuàng)建新工程

2.點(diǎn)擊之后,界面會(huì)跳轉(zhuǎn)到如下界面艳狐,按照?qǐng)D中選擇后定硝,點(diǎn)擊next即可(另圖中*處標(biāo)明你必須確保你已經(jīng)為你的intellij配置過(guò)了jdk的路徑)。

選擇gradle

3.之后毫目,會(huì)彈出如下界面蔬啡,填寫(xiě)GroupId和ArtifactId即可,填寫(xiě)之后繼續(xù)點(diǎn)擊next镀虐。

填寫(xiě)groupId和ArtifactId

4.然后會(huì)彈出如下界面箱蟆,并按圖中紅框標(biāo)注進(jìn)行選擇,選擇完畢后再次點(diǎn)擊next刮便。

選擇gradle配置

5.然后就到了最后一步空猜,填寫(xiě)工程名稱(chēng),并選擇工程所在路徑恨旱,如圖辈毯,填寫(xiě)和設(shè)置完成后,點(diǎn)擊finish即可搜贤。

填寫(xiě)工程名稱(chēng)和路徑

6.在intellij的左側(cè)即可顯示出創(chuàng)建完成的工程谆沃,如下圖所示:

初始創(chuàng)建的工程目錄

以上就是使用intellij IDEA 創(chuàng)建一個(gè)gradle工程的簡(jiǎn)單引導(dǎo)過(guò)程,具體的還要以實(shí)際操作為準(zhǔn)仪芒。

二管毙、創(chuàng)建頁(yè)面

因?yàn)檫@是鄙人整理的關(guān)于java GUI的知識(shí)文檔腿椎,所以這一節(jié)是最重要的,畢竟GUI中夭咬,頁(yè)面是它最大的特色啃炸。但鄙人才疏學(xué)淺,也只能是介紹些基礎(chǔ)知識(shí)和它們的基本用法卓舵,希望可以起到拋磚引玉的作用南用。

1. 創(chuàng)建一個(gè)GUI頁(yè)面的流程:

在上述第一節(jié)中創(chuàng)建的gradle工程中,在其目錄中選擇如下文件夾(或者你也可以另外在main文件夾下創(chuàng)建新的文件夾):

右擊java

右擊后掏湾,選擇new-->GUI Form裹虫,點(diǎn)擊GUI Form后,會(huì)出現(xiàn)如下對(duì)話(huà)框:

guiformdialog

在其中輸入Form name融击,則下方的Class name默認(rèn)與Form name相同筑公,例如輸入Test,點(diǎn)擊ok后尊浪,即生成如下的組合文件:

Test組合文件

這兩個(gè)文件中匣屡,Test.form 即為放置GUI中的布局和控件的地方,類(lèi)似于Android中的xml布局文件或者說(shuō)是前端的html文件拇涤,或者說(shuō)是iOS的StoryBoard之類(lèi)的捣作。可以認(rèn)為鹅士,用戶(hù)最終看到和接觸到的就是就是這個(gè)文件展示的效果券躁。另外的Test類(lèi),則是Test.form文件對(duì)應(yīng)的捆綁類(lèi)掉盅,在這其中主要進(jìn)行Test.form頁(yè)面相關(guān)的邏輯處理也拜,包括Test.form文件中的各個(gè)控件的各種事件,用到的數(shù)據(jù)的處理等等趾痘。

在這里鄙人只對(duì)Test類(lèi)中的一些共性操作作簡(jiǎn)單介紹搪泳,具體的邏輯處理則因頁(yè)面功能而異,需要大家自己去具體處理了扼脐;而對(duì)Test.form中放置的布局岸军、控件等則會(huì)進(jìn)行較為詳細(xì)的介紹,包括布局的基本屬性和用法瓦侮,控件的基本屬性和用法等等艰赞。

?先給大家看個(gè)最簡(jiǎn)單的效果:

巨特么簡(jiǎn)單的效果

上面這個(gè)巨簡(jiǎn)單的效果圖,就是通過(guò)GUI Form創(chuàng)建的頁(yè)面代碼run之后生成的java的桌面程序肚吏。


它雖然簡(jiǎn)單方妖,但是卻包含了使用Intellij IDEA 創(chuàng)建java GUI Form程序的完整流程,下面鄙人對(duì)這個(gè)完整流程進(jìn)行簡(jiǎn)單介紹:


首先需要說(shuō)明罚攀,這個(gè)頁(yè)面中包含的控件党觅,只有一個(gè)JLabel是本人放置的雌澄,其它的控件都是系統(tǒng)自動(dòng)生成的,它的Component Tree(其實(shí)就是組件的節(jié)點(diǎn)組合效果) 顯示如下:

componenttree

下面說(shuō)具體的創(chuàng)建流程:即點(diǎn)擊下圖中1處的JLabel控件杯瞻,然后再點(diǎn)擊2處系統(tǒng)默認(rèn)生成的Jpanel镐牺,就搞定了。魁莉。

拖放JLabel

之后睬涧,則需要進(jìn)行屬性的設(shè)置,說(shuō)到屬性的設(shè)置旗唁,對(duì)每個(gè)控件都只有設(shè)置了它的filed name畦浓,才會(huì)在該GUI Form文件對(duì)應(yīng)的捆綁類(lèi)中生成對(duì)應(yīng)的控件對(duì)象。


所以針對(duì)上圖拖放的JLabel检疫,需要修改它的fieldName讶请,暫且改為testLabel,而系統(tǒng)默認(rèn)生成的JPanel則改為rootPanel屎媳。然后簡(jiǎn)單設(shè)置testLabel 的text屬性夺溢,即設(shè)置它的顯示文字,如下圖中選擇testLabel的text屬性剿牺,點(diǎn)擊后輸入文字,再點(diǎn)擊鍵盤(pán)的enter即可环壤。

設(shè)置testLabel的文字

這樣test.form文件的控件擺放和控件屬性設(shè)置就完成了晒来,接下來(lái)來(lái)到Test這個(gè)類(lèi)文件中,可以看到在其中已經(jīng)生成了兩個(gè)控件對(duì)象郑现,如下圖湃崩,這兩個(gè)控件就是我們?cè)O(shè)置了field name 的控件:

只有控件

然后就是最關(guān)鍵的一步操作了,在當(dāng)前的Test類(lèi)的界面執(zhí)行如下操作:右擊當(dāng)前類(lèi)的{}所包含界面-->選擇Generate-->選擇Form main()接箫,點(diǎn)擊后即會(huì)生成如下代碼:

生成main函數(shù)

之后運(yùn)行工程攒读,即可顯示出上述最簡(jiǎn)單的頁(yè)面效果了。

2. 控件和布局

接下來(lái)辛友,鄙人再對(duì)GUI Form中常用的布局和控件進(jìn)行簡(jiǎn)單的介紹薄扁,當(dāng)然,由于這些布局或控件的數(shù)量比較多废累,所以我也只是對(duì)其中的某一個(gè)進(jìn)行屬性和用法的簡(jiǎn)單介紹邓梅,至于其他的,大家可以參考這些介紹邑滨,自行嘗試即可日缨。

2.1 布局

下面先說(shuō)布局,在GUI Form中提供了以下幾種選擇:BorderLayout掖看,CardLayout匣距,F(xiàn)lowLayout面哥,F(xiàn)ormLayout(JGoodies),GridBagLayout毅待,GridLayoutManager(Intellij)等尚卫。在這里鄙人只簡(jiǎn)單講解GridLayoutManager(Intellij)這個(gè)布局的使用。

目前來(lái)說(shuō)恩静,根據(jù)鄙人為數(shù)不多的使用經(jīng)驗(yàn)來(lái)看焕毫,通過(guò)這個(gè)GridLayoutManager的布局,加上JPanel的使用驶乾,一般是可以實(shí)現(xiàn)任何布局上的效果的邑飒。比如,實(shí)現(xiàn)上下左右四個(gè)panel的效果:

簡(jiǎn)單的例子

上述效果的實(shí)現(xiàn)就是在系統(tǒng)的rootPanel的布局屬性上選擇GridLayoutManager(Intellij)后级乐,再依次拖放四個(gè)JPanel控件到rootPanel疙咸,然后簡(jiǎn)單的調(diào)整各個(gè)控件的大小,給各個(gè)JPanel設(shè)置不同的背景色后實(shí)現(xiàn)的效果风科。

設(shè)置JPanel的布局

好了撒轮,關(guān)于布局的用法,就簡(jiǎn)單說(shuō)到這里贼穆,因?yàn)樗鼈兊挠梅ǘ继`活了题山,需要大家去親自實(shí)踐,才能更好的實(shí)現(xiàn)你需要的效果故痊。

2.2 控件

下面就講解控件的屬性和用法顶瞳,就以最常用的JButton為例來(lái)對(duì)它的屬性和基本用法進(jìn)行講解:

先來(lái)看下面兩個(gè)截圖中的GUI Form文件提供的Button控件的所有屬性(需要勾選show expert properties),:

JButton所有屬性1
JButton所有屬性2

下面再針對(duì)上面兩個(gè)截圖中紅框中的屬性進(jìn)行簡(jiǎn)單講解愕秫,其他的屬性鄙人也沒(méi)有用過(guò)就不多說(shuō)了慨菱,靠大家自己去嘗試了。

HorizontalSizePolicy 水平尺寸策略

可選擇的值有can shrink戴甩,can grow符喝,fixed,其效果都是跟它的字面意思差不多:

?can shrink:水平大小可以收縮

?can grow : 水平大小可以擴(kuò)展

? fixed:水平大小固定

? 請(qǐng)注意甜孤,如果JButton設(shè)置了prefered Size , MinimumSize , MaximumSize协饲,且這個(gè)三個(gè)值都是一樣的,那么就會(huì)使當(dāng)前的HorizontalSizePolicy屬性失效缴川。?

VerticalSizePolicy 豎直尺寸策略囱稽,同上,只是是豎直方向的二跋。?

HorizontalAlign? 水平對(duì)齊方式?

? 設(shè)置button位置的水平對(duì)齊方式战惊,可選擇的值有:

left:位置居左

right:位置居右

center:位置居中

fill:充滿(mǎn)父容器

? 其作用也是同字面意思,但是button的位置是相對(duì)于父控件而言的,即一般都是Panel類(lèi)型的控件吞获。?

VerticalAlign豎直對(duì)齊方式况凉,同上水平對(duì)齊方式。

MinimumSize:最小尺寸各拷,PreferedSize:希望呈現(xiàn)的尺寸刁绒,MaximumSize:最大尺寸。

這三個(gè)屬性是一組的烤黍,默認(rèn)值都是[-1, -1]知市,但是想要設(shè)置button為某個(gè)具體的尺寸則需要將它們?nèi)齻€(gè)的值設(shè)置成一樣的。

background:背景色

enabled:是否可以交互速蕊。默認(rèn)都是可以交互的嫂丙,取消選中后則不可交互。

font: 字體大小规哲,點(diǎn)擊后可選擇其大小值跟啤。

foreground:字體顏色。

icon:設(shè)置按鈕上的圖片唉锌,點(diǎn)擊后會(huì)引導(dǎo)你在工程目錄中選擇隅肥,所以需要設(shè)置圖片的話(huà),需要提前放到工程中袄简。

margin:外邊距腥放,同所有的其他語(yǔ)言中的margin一樣。

opaque: 不透明

該屬性一般控件默認(rèn)是選中的绿语,但是有個(gè)特殊情況:JLabel秃症,這個(gè)控件的該屬性是默認(rèn)不選中的,這時(shí)候汞舱,你若設(shè)置JLabel的背景就會(huì)發(fā)現(xiàn)伍纫,它死活不顯示背景色宗雇。只有當(dāng)JLabel的opaque屬性選中后才會(huì)顯示昂芜。

text:文字,即設(shè)置按鈕上的文字

另外赔蒲,提到按鈕泌神,最最最重要的當(dāng)然是它的點(diǎn)擊事件辣,所以這里鄙人也為大家提供一種創(chuàng)建某個(gè)控件的監(jiān)聽(tīng)事件的快捷方式:

在Form文件中舞虱,右擊要?jiǎng)?chuàng)建監(jiān)聽(tīng)事件的控件

選擇Create Listener

然后就會(huì)彈出一堆的監(jiān)聽(tīng)事件欢际,按鈕的監(jiān)聽(tīng)事件即為第一個(gè)ActionListener,選擇后會(huì)回到該Form文件對(duì)應(yīng)的class文件中矾兜,彈出如下對(duì)話(huà)框:

創(chuàng)建按鈕事件監(jiān)聽(tīng)器的彈出對(duì)話(huà)框

點(diǎn)擊ok即可完成創(chuàng)建损趋,創(chuàng)建完成后,會(huì)在該Form文件對(duì)應(yīng)的class文件中生成如下代碼椅寺,在其中的actionPerformed()方法中即可完成相應(yīng)的邏輯處理浑槽。

自動(dòng)生成的監(jiān)聽(tīng)事件代碼

好了蒋失,至此就算是勉強(qiáng)給大家開(kāi)了個(gè)java GUI相關(guān)內(nèi)容的門(mén)縫,具體的掌握這個(gè)冷門(mén)的技術(shù)還是需要大家在用到的時(shí)候桐玻,親自去上手實(shí)踐才是篙挽。下面附上一些可能大家會(huì)想要了解的Java Swing相關(guān)介紹的博客鏈接:

javaSwing教程

JSFileChooser文件選擇器demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市镊靴,隨后出現(xiàn)的幾起案子铣卡,更是在濱河造成了極大的恐慌,老刑警劉巖偏竟,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件煮落,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡苫耸,警方通過(guò)查閱死者的電腦和手機(jī)州邢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)褪子,“玉大人量淌,你說(shuō)我怎么就攤上這事∠油剩” “怎么了呀枢?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)笼痛。 經(jīng)常有香客問(wèn)我裙秋,道長(zhǎng),這世上最難降的妖魔是什么缨伊? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任摘刑,我火速辦了婚禮,結(jié)果婚禮上刻坊,老公的妹妹穿的比我還像新娘枷恕。我一直安慰自己,他們只是感情好谭胚,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布徐块。 她就那樣靜靜地躺著,像睡著了一般灾而。 火紅的嫁衣襯著肌膚如雪胡控。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天旁趟,我揣著相機(jī)與錄音昼激,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛橙困,可吹牛的內(nèi)容都是我干的敛劝。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼纷宇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼夸盟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起像捶,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤上陕,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后拓春,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體释簿,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年硼莽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了庶溶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡懂鸵,死狀恐怖偏螺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情匆光,我是刑警寧澤套像,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站终息,受9級(jí)特大地震影響夺巩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜周崭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一柳譬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧续镇,春花似錦美澳、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)柴墩。三九已至忙厌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間江咳,已是汗流浹背逢净。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人爹土。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓甥雕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親胀茵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子社露,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

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