1. 程式人生 > >14.2-全棧Java筆記: Java Swing創建窗口,原來這麽簡單!!!

14.2-全棧Java筆記: Java Swing創建窗口,原來這麽簡單!!!

java

上節我們聊到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創建窗口,原來這麽簡單!!!