swing -使用者介面開發工具包

swing

Swing是一個用于開發Java應用程式使用者介面的開發工具包。

以抽象視窗工具包(AWT)為基礎使跨平台應用程式可以使用任何可插拔的面板風格。Swing開發人員隻用很少的代碼就可以利用Swing豐富、靈活的功能和模組化組件來建立優雅的使用者介面。 工具包中所有的包都是以swing作為名稱,例如javax.swing,javax.swing.event。

  • 中文名稱
    Swing
  • 涵    義
    開發工具包
  • 適    用
    電腦
  • 功    能
    Java使用者介面開發

步驟

(1)導入Swing包

Swing 可定製圖形介面Swing 可定製圖形介面

(2)選擇介面風格

(3)設定頂層容器

(4)設定按鈕和標簽

(5)將組件放到容器上

(6)為組件增加框線

(7)處理事件

(8)輔助技術支持

導入

下面語句導入Swing包

import javax.swing.*;

大部分Swing程式用到了AWT的基礎底層結構和事件模型,因此需要導入兩個包:

import java.awt.*;

import java.awt.event.*;

如果圖形介面中包括了事件處理,那麽還需要導入事件處理包:

import javax.swing.event.*;

選擇介面風格

Swing允許選擇程式的圖形介面風格常用的有java風格,windows風格等

下面的代碼用于選擇圖形介面風格,這裏選擇的是跨平台的Java介面風格。

try { UIManager.setLookAndFeel(

UIManager.getCrossPlatformLookAndFeelClassName( )); }

catch (Exception e) { }

設定頂層容器

圖形介面至少要有一個頂級Swing容器

頂級Swing容器為其它Swing組件在螢幕上的繪製和處理事件提供支持

常用的頂級容器:

JFrame(架構):表示主程式視窗

JDialog(對話框):每個JDialog對象表示一個對話框,對話框屬于二級視窗

JApplet(小程式):在流覽器內顯示一個小程式介面

一個架構包括邊界、選單欄、工具列、狀態欄,以及中間佔主要部分的窗格

窗格也可以看作是一種面板,但它是架構的一個組成部分

組件不會直接放到架構上,而是放在若幹個面板上,這些面板再放到窗格上

用架構對象的getContentPane()函式來獲得窗格,再調用窗格的add()函式放置面板

public static void main(String[ ]args){JFrame frame=new JFrame("SwingApplication");

JPanel panel1=new JPanel();

frame.getContentPane().add(panel1,BorderLayout.CENTER);

......//

增加組件

frame.pack();frame.setVisible(true);}

套用

模式

關鍵是java.awt.*裏面的兩個與顯示設備有關的類:GraphicsEnvironment和GraphicsDevice。

GraphicsEnvironment為Java應用程式提供了特定平台的 GraphicsDevice對象和 Font 對象集合。這些GraphicsDevice可以是各種本機和遠端機器的資源,如螢幕、印表機或者是Image Buffer,甚至是Graphics2D繪圖方法的目標對象。

而GraphicsDevice就是指特定的圖形環境了,如螢幕和列印設備等。這樣,我們就可以用GraphicsDevice來操縱螢幕了。GraphicsDevice提供的setFullScreenWindow()方法就是設定全螢幕幕用的。

事件處理

監聽器:ActionListener

方 法:actionPerformed

事 件:ActionEvent

● String getActionCommand()

actioncommand是控制項內部的一個字元串,用于標識控制項的狀態。

此函式可以取得控制項的狀態,從而決定到底該做什麽。

● int getModifiers()

取得"產生此事件時,使用者同時按下的組合鍵"

● long getWhen()

取得"產生此事件時的時間戳"

事件產生原因:點擊按鈕,在列表框中選擇內容,在文本框中點回車,計時器到期

監聽器:AdjustmentListener

方 法:adjustmentValueChanged

事 件:AdjustmentEvent

● Adjustable getAdjustable()

adjustable是一個接口,各種捲動條都實現了這個接口。

● int getAdjustmentType()

取得捲動類型,共有UNIT_INCREMENT,UNIT_DECREMENT,BLOCK_INCREMENT,BLOCK_DECREMENT,TRACK共5種類型

● int getValue()

取得捲動滑塊的當前值

事件產生原因:捲動條的捲動

監聽器:ItemListener

方 法:itemStateChanged

事 件:ItemEvent

● Objedt getItem()

取得被選中的元素。註意,返回值是Object,還應該進行強製類型轉換

● ItemSelectable getItemSelectable()

ItemSelectable是一個接口,代表那些包含了n個可供選擇的子元素的對象。此方法返回產生此事件的對象。此方法的作用主要在于,如果一個列表框是允許多選的,那麽上面的方法就不好用了,應該用此方法得到列表對象,再取得被選中的多個元素。

● int getStateChange()

取得選擇的狀態,是SELECTED還是DESELECTED

事件產生原因:各種按鈕的點擊,列表框的選擇

監聽器:FocusListener

方 法:focusGained、focusLost

事 件:FocusEvent

● Component getOppositeComponent()

得到"參與焦點變換的"另一個對象。如果是焦點取得事件,則返回之前擁有焦點的對象;如果是焦點失去事件,則返回得到焦點的對象。若焦點轉移到另外一個應用程式,返回null

● boolean isTemporary()

焦點是臨時性轉移還是永久轉移。臨時性轉移:用滑鼠拖動視窗或者視窗變為非激活狀態。其他為永久性轉移。

事件產生原因:各種組件的焦點變化

監聽器:KeyListener

方 法:keyPressed、keyReleased、keyTyped

事 件:KeyEvent

● char getKeyChar()

此方法隻在keytyped中有效,返回按下的字元。比如按下shift+a,返回'A'

● int getKeyCode()

取得鍵盤上按鍵的整數編碼。請註意,是鍵盤上的按鍵,比如F1,Ctrl,Home鍵等等,都有相應編碼。不支持組合鍵,也就是說"Shift+a"和"a"返回同樣的內容,都是小寫a的ASCII碼。但是大鍵盤的數位鍵和小鍵盤的數位鍵返回內容不同。

● static String getKeyModifiersText(int modifiers)

將掩碼轉化為字元串,比如"Ctrl","Ctrl+Shift"等。註意它是static方法

● static String getKeyText(int keyCode)

返回keyCode代表的按鈕的名字,比如"Home","F1"等。註意它是statci方法

事件產生原因:在各種組件上敲擊鍵盤

監聽器:MouseListener

方 法:mouseClicked、mousePressed、mouseReleased

mouseEntered、mouseExited

事 件:MouseEvent

● Point getLocationOnScreen()

返回滑鼠相對于顯示螢幕的絕對坐標(Java1.6版提供)

● int getXOnScreen()

返回滑鼠相對于顯示螢幕的X的絕對坐標(java 1.6版提供)

● int getYOnScreen()

返回滑鼠相對于顯示螢幕的Y的絕對坐標(java 1.6版提供)

● Point getPoint()

返回滑鼠相對于組件的絕對坐標

● int getX()

返回滑鼠相對于組件的X的絕對坐標

● int getY()

返回滑鼠相對于組件的Y的絕對坐標

● void translatePoint(int x, int y)

給滑鼠的做用點加上一個偏移量。比如2個參數分別是10, 20,你要用滑鼠畫直線,當你滑鼠指向100,100開始畫,實際上的線是畫在110,120處

● int getClickCount()

產生此事件時滑鼠共點擊了多少下(單擊、雙擊、三擊……)

● int getButton()

產生此事件時,滑鼠的哪個鍵被點擊了:NOBUTTON, BUTTON1, BUTTON2 或者 BUTTON3

● boolean isPopupTrigger()

是否能夠觸發一個彈出式選單。由于各平台觸發彈出式選單的情況不一樣,因此應該在mousePressed 和 mouseReleased中都檢測一下

事件產生原因:在任何組件上點擊滑鼠、將游標移動進來或出去

監聽器:MouseMotionListener

方 法:mouseDragged、mouseMoved

事 件:MouseEvent

事件產生原因:在任何組件上移動滑鼠

監聽器:MouseWheelListener

方 法:mouseWheelMoved

事 件:MouseWheelEvent

● int getScrollType()

捲動的類型,是按塊捲動WHEEL_BLOCK_SCROLL還是按單位捲動WHEEL_UNIT_SCROLL

● int getScrollAmount()

返回為相應此事件應該捲動的單位數。此方法有效的前提是按單位捲動。

● int getWheelRotation()

滑鼠滾輪捲動過程中"咔嚓"聲的數目。向上滾為負值,向下滾為正值

事件產生原因:在任何組件上捲動滑鼠中鍵

監聽器:WindowListener

方 法:windowOpened、windowClosing、windowClosed、windowIconified

windowDeiconified、windowActivated、windowDeactivated

事 件:WindowEvent

● Window getWindow()

返回發生此事件的window對象

● Window getOppositeWindow()

若發生了焦點轉移,返回另一個參與此事件的window對象,或者null

● int getOldState()

視窗變化前的狀態:NORMAL、ICONIFIED、MAXIMIZED_BOTH

● int getNewState()

視窗變化後的狀態

事件產生原因:視窗發生變化

監聽器:WindowFocusListener

方 法:windowGainedFocus、windowLostFocus

事 件:WindowEvent

事件產生原因:視窗得到或失去焦點

監聽器:WindowstateListener

方 法:WindowstateChanged

事 件:WindowEvent

事件產生原因:視窗狀態改變

相關詞條

相關搜尋

其它詞條