本博客主要對(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
2.點(diǎn)擊之后,界面會(huì)跳轉(zhuǎn)到如下界面艳狐,按照?qǐng)D中選擇后定硝,點(diǎn)擊next即可(另圖中*處標(biāo)明你必須確保你已經(jīng)為你的intellij配置過(guò)了jdk的路徑)。
3.之后毫目,會(huì)彈出如下界面蔬啡,填寫(xiě)GroupId和ArtifactId即可,填寫(xiě)之后繼續(xù)點(diǎn)擊next镀虐。
4.然后會(huì)彈出如下界面箱蟆,并按圖中紅框標(biāo)注進(jìn)行選擇,選擇完畢后再次點(diǎn)擊next刮便。
5.然后就到了最后一步空猜,填寫(xiě)工程名稱(chēng),并選擇工程所在路徑恨旱,如圖辈毯,填寫(xiě)和設(shè)置完成后,點(diǎn)擊finish即可搜贤。
6.在intellij的左側(cè)即可顯示出創(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)建新的文件夾):
右擊后掏湾,選擇new-->GUI Form裹虫,點(diǎn)擊GUI Form后,會(huì)出現(xiàn)如下對(duì)話(huà)框:
在其中輸入Form name融击,則下方的Class name默認(rèn)與Form name相同筑公,例如輸入Test,點(diǎn)擊ok后尊浪,即生成如下的組合文件:
這兩個(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)單的效果:
上面這個(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)組合效果) 顯示如下:
下面說(shuō)具體的創(chuàng)建流程:即點(diǎn)擊下圖中1處的JLabel控件杯瞻,然后再點(diǎn)擊2處系統(tǒng)默認(rèn)生成的Jpanel镐牺,就搞定了。魁莉。
之后睬涧,則需要進(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即可环壤。
這樣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ì)生成如下代碼:
之后運(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的效果:
上述效果的實(shí)現(xiàn)就是在系統(tǒng)的rootPanel的布局屬性上選擇GridLayoutManager(Intellij)后级乐,再依次拖放四個(gè)JPanel控件到rootPanel疙咸,然后簡(jiǎn)單的調(diào)整各個(gè)控件的大小,給各個(gè)JPanel設(shè)置不同的背景色后實(shí)現(xiàn)的效果风科。
好了撒轮,關(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),:
下面再針對(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à)框:
點(diǎn)擊ok即可完成創(chuàng)建损趋,創(chuàng)建完成后,會(huì)在該Form文件對(duì)應(yīng)的class文件中生成如下代碼椅寺,在其中的actionPerformed()方法中即可完成相應(yī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)介紹的博客鏈接: