14.2-全棧Java筆記: Java Swing創(chuàng)建窗口,原來這么簡單?。?!

上節(jié)我們聊到GUI(Graphical User Interface)的概念,并學習GUI編程中主要需掌握兩個包,分別是:AWT和Swing,本節(jié)我們會通過Swing程序中常用的類和控件來實現(xiàn)第一個窗口。

javax.swing.JFrame

JFrame在GUI中為一個窗口對象,繼承于Frame。JFrame控件用于在Swing程序中創(chuàng)建窗體。如表1所示,為JFrame常見的構(gòu)造方法。

注意:

Java語言規(guī)定在GUI編程中任何窗口實例化出來時默認為不可見(即隱藏)狀態(tài),所以當我們使用構(gòu)造方法實例化JFrame對象時,是不可見的。

JFrame中還包含了展示窗體和很多對窗體屬性(如大小、顏色等)進行設(shè)置的方法,如表2所示。

了解了JFrame類常用的構(gòu)造方法和成員方法后,接下來我們使用一個示例來創(chuàng)建一個簡單的窗口,如示例1所示。

【示例1】創(chuàng)建一個簡單的窗口

packagecn.sxt.views.testjframe;

importjava.awt.Color;

importjavax.swing.JFrame;

publicclassJFrameDemo1{

publicstaticvoidmain(String[ ]args) {

JFramef=newJFrame();//創(chuàng)建一個新窗體

f.setSize(500,400);//設(shè)置窗體大小

f.setVisible(true);//設(shè)置窗體可見

f.setBackground(Color.black);//設(shè)置顏色無效

}

}

如上,main方法中的第一行代碼實例化了一個窗口對象,第二行代碼設(shè)置窗口的尺寸(注意:尺寸的定位為像素),因為窗口默認為不可見,所以第三行代碼設(shè)置讓窗口可見。在JFrame中還有一個show()方法也可以讓窗口可見,但是不推薦使用,因為show()只能讓窗口可見,但是setVisible如果傳入?yún)?shù)true則窗口可見,傳入?yún)?shù)false則窗口不可見,所以setVisible方法比show方法更加靈活。

示例1的執(zhí)行結(jié)果如圖所示:

示例1運行效果圖

另外我們發(fā)現(xiàn)使用setBackground方法改變窗體顏色在JFrame中無效,因為該方法是繼承于Frame的。在JFrame要用:JFrame.getContentPane().setBackground(Color.bule); 如示例2所示。

【示例2】改變窗體的顏色

packagecn.sxt.views.testjframe;

importjava.awt.Color;

importjavax.swing.JFrame;

publicclassJFrameDemo2{

publicstaticvoidmain(String[ ]args) {

JFramef=newJFrame();//創(chuàng)建一個新窗體

f.setSize(500,400);//設(shè)置窗體大小

f.setVisible(true);//設(shè)置窗體可見

//f.setBackground(Color.blue);//設(shè)置顏色無效

//若要使用JFrame改變窗體的顏色,需要使用該方法

f.getContentPane().setBackground(Color.black);

}

}

執(zhí)行結(jié)果如圖所示:

圖 示例2運行效果圖

上述兩個示例中創(chuàng)建的窗體默認是可以由用戶調(diào)整大小的,如果我們不想讓窗口的大小隨意調(diào)整,并且將創(chuàng)建窗體的代碼進行封裝,可以使用示例3中的代碼。

【示例3】創(chuàng)建不可調(diào)整大小的窗體

packagecn.sxt.views.testjframe;

importjavax.swing.JFrame;

classJFrameDemo3extendsJFrame {

publicJFrameDemo3() {

init();

}

//該方法對窗口做初始化

privatevoidinit() {

//設(shè)置窗口標題欄上信息

this.setTitle("第一個窗口");

//設(shè)置窗口大小為寬:500,高:400

this.setSize(500, 400);

//設(shè)置窗口不能被調(diào)整大小

this.setResizable(false);

//設(shè)置窗口可見

this.setVisible(true);

}

}

publicclassTest {

publicstaticvoidmain(String[ ]args) {

//調(diào)用JFrameDemo3的構(gòu)造方法創(chuàng)建并顯示窗體

newJFrameDemo3();

}

}

執(zhí)行結(jié)果如圖所示:

示例3運行效果圖

但是細心的讀者會發(fā)現(xiàn),該窗口關(guān)閉時,應用程序并沒有結(jié)束。這是因為Java規(guī)定:窗口默認的關(guān)閉模式只是不可見,這就導致我們關(guān)閉一個窗口時,窗口其實是隱藏了,而不是程序結(jié)束了,所以要解決這個問題,需要在init()方法中this.setVisible(true);這句代碼之前添加this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 這個方法,該方法的功能是設(shè)置窗口的關(guān)閉模式,它的形參為int型,而JFrame已經(jīng)為各種不同的關(guān)閉模式設(shè)置了常量,JFrame.EXIT_ON_CLOSE 的意思就是關(guān)閉時退出應用程序,此外常見的其他常量還有:JFrame.DISPOSE_ON_CLOSE(該常量的意思為:關(guān)閉時退出該窗口),JFrame.DO_NOTHING_ON_CLOSE (該常量的意思為:關(guān)閉時不做任何處理)等。

但是在寫init()方法時,建議將setVisible方法寫在init方法中的最后一句,窗口設(shè)置完畢后再讓窗口顯示。調(diào)整JFrameDemo3中的代碼如示例4所示。

【示例4】設(shè)置窗體的關(guān)閉模式

classJFrameDemo3extendsJFrame {

publicJFrameDemo3() {

init();

}

//該方法對窗口做初始化

privatevoidinit() {

//設(shè)置窗口標題欄上信息

this.setTitle("第一個窗口");

//設(shè)置窗口大小為寬:500,高:400

this.setSize(500, 400);

//設(shè)置窗口不能被調(diào)整大小

this.setResizable(false);

//關(guān)閉窗口時,程序結(jié)束

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//設(shè)置窗口可見

this.setVisible(true);

}

}


「全棧Java筆記」是一部能幫大家從零到一成長為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G,10年Java研發(fā)經(jīng)驗,曾在神州數(shù)碼、航天院某所研發(fā)中心從事軟件設(shè)計及研發(fā)工作,從小白逐漸做到工程師、高級工程師、架構(gòu)師。精通Java平臺軟件開發(fā),精通JAVAEE,熟悉各種流行開發(fā)框架。

筆記包含從淺入深的六大部分:

A-Java入門階段

B-數(shù)據(jù)庫從入門到精通

C-手刃移動前端和Web前端

D-J2EE從了解到實戰(zhàn)

E-Java高級框架精解

F-Linux和Hadoop

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容