14.2-全棧Java筆記: Java Swing創建窗口,原來這麽簡單!!!
上節我們聊到GUI(Graphical User Interface)的概念,並學習GUI編程中主要需掌握兩個包,分別是:AWT和Swing,本節我們會通過Swing程序中常用的類和控件來實現第一個窗口。
javax.swing.JFrame
JFrame在GUI中為一個窗口對象,繼承於Frame。JFrame控件用於在Swing程序中創建窗體。如表1所示,為JFrame常見的構造方法。
註意:
Java語言規定在GUI編程中任何窗口實例化出來時默認為不可見(即隱藏)狀態,所以當我們使用構造方法實例化JFrame對象時,是不可見的。
JFrame中還包含了展示窗體和很多對窗體屬性(如大小、顏色等)進行設置的方法,如表2所示。
了解了JFrame類常用的構造方法和成員方法後,接下來我們使用一個示例來創建一個簡單的窗口,如示例1所示。
【示例1】創建一個簡單的窗口
package cn.sxt.views.testjframe;
import java.awt.Color;
import javax.swing.JFrame;
public class JFrameDemo1{
public static void main(String[ ] args) {
JFrame f = new JFrame();//創建一個新窗體
f.setSize(500,400);//設置窗體大小
f.setVisible(true);//設置窗體可見
f.setBackground(Color.black);//設置顏色無效
}
}
如上,main方法中的第一行代碼實例化了一個窗口對象,第二行代碼設置窗口的尺寸(註意:尺寸的定位為像素),因為窗口默認為不可見,所以第三行代碼設置讓窗口可見。在JFrame中還有一個show()方法也可以讓窗口可見,但是不推薦使用,因為show()只能讓窗口可見,但是setVisible如果傳入參數true則窗口可見,傳入參數false則窗口不可見,所以setVisible方法比show方法更加靈活。
示例1的執行結果如圖所示:
另外我們發現使用setBackground方法改變窗體顏色在JFrame中無效,因為該方法是繼承於Frame的。在JFrame要用:JFrame.getContentPane().setBackground(Color.bule); 如示例2所示。
【示例2】改變窗體的顏色
package cn.sxt.views.testjframe;
import java.awt.Color;
import javax.swing.JFrame;
public class JFrameDemo2{
public static void main(String[ ] args) {
JFrame f = new JFrame();//創建一個新窗體
f.setSize(500,400);//設置窗體大小
f.setVisible(true);//設置窗體可見
//f.setBackground(Color.blue);//設置顏色無效
//若要使用JFrame改變窗體的顏色,需要使用該方法
f.getContentPane().setBackground(Color.black);
}
}
執行結果如圖所示:
上述兩個示例中創建的窗體默認是可以由用戶調整大小的,如果我們不想讓窗口的大小隨意調整,並且將創建窗體的代碼進行封裝,可以使用示例3中的代碼。
【示例3】創建不可調整大小的窗體
package cn.sxt.views.testjframe;
import javax.swing.JFrame;
class JFrameDemo3 extends JFrame {
public JFrameDemo3() {
init();
}
//該方法對窗口做初始化
private void init() {
//設置窗口標題欄上信息
this.setTitle("第一個窗口");
//設置窗口大小為寬:500,高:400
this.setSize(500, 400);
//設置窗口不能被調整大小
this.setResizable(false);
//設置窗口可見
this.setVisible(true);
}
}
public class Test {
public static void main(String[ ] args) {
//調用JFrameDemo3的構造方法創建並顯示窗體
new JFrameDemo3();
}
}
執行結果如圖所示:
但是細心的讀者會發現,該窗口關閉時,應用程序並沒有結束。這是因為Java規定:窗口默認的關閉模式只是不可見,這就導致我們關閉一個窗口時,窗口其實是隱藏了,而不是程序結束了,所以要解決這個問題,需要在init()方法中this.setVisible(true);這句代碼之前添加this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 這個方法,該方法的功能是設置窗口的關閉模式,它的形參為int型,而JFrame已經為各種不同的關閉模式設置了常量,JFrame.EXIT_ON_CLOSE 的意思就是關閉時退出應用程序,此外常見的其他常量還有:JFrame.DISPOSE_ON_CLOSE(該常量的意思為:關閉時退出該窗口),JFrame.DO_NOTHING_ON_CLOSE (該常量的意思為:關閉時不做任何處理)等。
但是在寫init()方法時,建議將setVisible方法寫在init方法中的最後一句,窗口設置完畢後再讓窗口顯示。調整JFrameDemo3中的代碼如示例4所示。
【示例4】設置窗體的關閉模式
class JFrameDemo3 extends JFrame {
public JFrameDemo3() {
init();
}
//該方法對窗口做初始化
private void init() {
//設置窗口標題欄上信息
this.setTitle("第一個窗口");
//設置窗口大小為寬:500,高:400
this.setSize(500, 400);
//設置窗口不能被調整大小
this.setResizable(false);
//關閉窗口時,程序結束
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//設置窗口可見
this.setVisible(true);
}
}
「全棧Java筆記」是一部能幫大家從零到一成長為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G,10年Java研發經驗,曾在神州數碼、航天院某所研發中心從事軟件設計及研發工作,從小白逐漸做到工程師、高級工程師、架構師。精通Java平臺軟件開發,精通JAVAEE,熟悉各種流行開發框架。
筆記包含從淺入深的六大部分:
A-Java入門階段
B-數據庫從入門到精通
C-手刃移動前端和Web前端
D-J2EE從了解到實戰
E-Java高級框架精解
F-Linux和Hadoop
本文出自 “全棧Java筆記” 博客,請務必保留此出處http://javanew.blog.51cto.com/12931675/1955146
14.2-全棧Java筆記: Java Swing創建窗口,原來這麽簡單!!!