Java中GUI—Swing組件

幾乎全部的咱們在javaGUI中用到的全部的組件(組件是幾乎全部的GUI中東西的統稱)都繼承自java.awt.Component類;幾乎全部的具備容器性質的組件都繼承自java.awt.Container類,並且這些組件中通常還會含有這樣的成員對象,什麼樣的成員對象呢?——Container類或繼承自Container類的對象java

爲了可以將GUI掌握,咱們會將幾乎全部的組件加以介紹,主要是將這些組件的基本功能加以介紹,這樣在遇到實際問題時,可以知道用什麼組件進行解決,至於每一個組件具體的方法固然就不能徹底列出來了,能夠查閱官方文檔加以瞭解windows

1、首先要了解java中事件的處理模型——委託事件模型數組

其中主要的就是說:當一個具體的組件產生一個事件時,這個組件就會將產生的事件對象傳遞給監聽這個組件的事件監聽對象——稱之爲這個組件的事件監聽器,有對象來處理這個事件;框架

2、接下來咱們就開始介紹這些組件(是否將《雍俊海》的P243中的——總體介紹寫到這個部分的開始)less

《》JFrame框架(頂層容器)——javax.swing.JFrameide

(1)這個框架主要是用於建立java應用程序窗口的一個頂層容器佈局

(2)構造方法3d

public JFrame() throws HeadlessException對象

public JFrame(String title) throws HeadlessExceptionblog

建立一個視覺上不可見的初始框架(在執行時只會出現一個空的windows窗口);String title 能夠指定建立的窗口的標題;

須要注意的是,通常咱們並非直接用JFrame來建立一個窗口對象,而是建立一個繼承JFrame的子類,由於這樣咱們不只可以使用JFrame中的方法,同時還可以擁有本身的方法,這樣就可以更好的使用這個框架了

(3)JFrame中有一個專門用於關閉窗口的方法

public void setDefaultCloseOperation( int opration)

opration通常設爲JFrame中的常量JFrame.EXIT_ON_CLOSE ;

只要在代碼中調用了這個方法,那麼在點擊窗口上的關閉按鈕時就可以將程序正常的關閉,(雖然不寫入這個方法,也可以關閉窗口,可是有時是不可以將程序關閉的,即窗口不見了,可是程序還在運行)

(4)public void setSize(int ,int) //設置窗口的大小

     public void setVisible(boolean)//設置窗口是否可見

(5)接下來咱們就可以在JFrame的子類中添加各類組件了,在添加組件以前咱們須要爲他設置一種佈局管理器,方法有兩種

一種是直接使用JFrame中的成員方法:

public void setLayout(LayoutManager mgr)

可是實際中咱們最經常使用的方法是:

好比咱們應經建立了一個繼承了JFrame 的子類對象—MyFrame

則Container coner = myFrame.getContentPane() ;

   coner.setLayout(new FlowLayout());

這是由於在JFrame中含有一個繼承自Container容器的成員域,經過使用getContentPane方法就可以返回這個成員域,因爲在Container類中也有setLayout()方法,因此這樣做也是有道理的,這兩個方法分別爲:

public Container getContentPane() ;

public void setLayout(LayoutManager mgr) ;

有必要說明的是在JFrame框架中,默認的佈局管理器是BorderLayout管理器

(6)public Component add(Component comp) ;

這個方法是用來在窗口中添加組件的,很是的經常使用

《》JLabel標籤(控件)

(1)標籤實際上也是一種容器,它也繼承了java.awt.container類,在java中它屬於一種叫作「不可編輯的信息組件」,在標籤中咱們能夠向其中添加文字和圖片,可是咱們是可以更改這些文字和圖片的,「不可編輯性」體如今他不能像文本編輯框那樣「實時更新」

 

(2)構造方法

public JLabel(String text ) ;

public JLabel(Icon icon) ;

public JLabel(String text , Icon icon,int horizon);

text——指定文本文字

icon——指定添加的圖片

horizon——指定文字和圖片在水平方向上的對齊方式

注意:①Icon類型是一個有關圖像的接口,ImageIcon是他的一個子類,因此咱們能夠將icon指定爲一個ImageIcon的實例對象

經過public ImageIcon(String filename) ;等構造方法就可以方便的建立出ImageIcon 對象了,其中的filename表明指定的圖片文件名;

②另一點是:在JLabel類中有不少用於設定添加到標籤中的文字和圖片的對齊方式的成員方法,咱們就不在介紹了,能夠查閱官方文檔,在這些方法方法中,經常須要用JLabel中 的靜態常量來指定方式:JLabel.LEFT/JLabel.RIGHT/JLabel.CENTER等等,能夠查閱官方文檔

(3)public void setText(String text) //設置標籤中的文字內容

pubic void setIcon(Icon icon)//設置標籤中的圖片

 

 

 

(4)public void setToolTipText(String text)

這個方法很是的有用,當咱們在調用了這個方法後,就可以出現這樣的效果——當鼠標在標籤上稍加停留時,就會在標籤上出現

String text指定的文字信息

《》JDialog和JOptionPane對話框(頂級容器)

對話框就是某個窗口的子窗口,首先介紹JDialog類

(1)構造方法

public JDialog(Dialoge ower,String title,boolean modal);

public JDialog(Frame ower,String title,boolean modal) ;

ower——指定當前窗口的父窗口

title——指定當前窗口的標題

modal——指定當前窗口的模式

說明:所謂的對話框模式就是當前窗口和父窗口的激活狀態,

當modal爲true時,那麼對話窗口爲有模式狀態,即當調出子窗口後,父窗口是處於非激活狀態的,反之,當modal爲false時,對話窗口處於無模式狀態,子窗口和父窗口同時處於激活狀態,當關閉父窗口時,子窗口也一併被關閉;

(2)和JFrame同樣 JDialog也有設置屬性的方法,如setSize()

,getContentPane(),setLayout()等等方法;當咱們調用setVisible()方法時,能夠顯示對話窗口

(3)public Component add(Component comp);

 

接下來介紹JOptionPane類,經過調用這個類中的一些靜態方法,就可以建立一些現成的模式對話框,這些模式對話框很是的簡單,當咱們須要建立一些很是簡單的對話框時,能夠直接使用這些方法來建立,因此通常不是經過繼承這個類,以後來建立對話框;

——消息對話框

(1)public static void showMessageDialog

(Component  parentCompoent,Object message)throws………..

(2)public static void showMessageDialog

(Component  parentCompoent,Object message ,

String title, int messageType)throws………..

(3)public static void showMessageDialog

(Component  parentCompoent,Object message ,

String title, int messageType , Icon icon)throws………..

parentComponent——指定父窗口

message——指定顯示的內容

title——指定標題

massageType——指定對話框顯示的消息類型

icon——指定對話框中的消息類型的圖標

說明:所謂的消息類型指的是,在消息對話框中有很都類型,好比說錯誤消息類型的消息對話框(JOptionPane.ERROR_MESSAGE)

信息類型的消息對話框(JOptionPane.INFORMATION_MESSAGE)

警告消息類型的消息對話框(JOptionPane.WARNING_MESSAGE)

疑問類型的消息對話框

(JOptionPane.QUESTION_MESSAGE)

簡單消息類型的消息對話框

(JOptionPane.PLAIN_MESSAGE)

不一樣消息類型的消息對話框在外型上基本同樣,只是會採用不一樣的圖標來表示不一樣的消息類型

——確認對話框

public static int showConfirmDialog

(Component parentComponent,Object message

String title ,int optionType,int messageType,

Icon icon)throws…….

這參數最全的一個確認對話框的靜態方法,至於其餘的部分參數的方法,查閱官方文檔就好了

parentComponent、message、title、messageType、icon參數和上面的方法徹底同樣

optionType——對話框的選項模式

因爲確認對話框中會有像「肯定」「取消」「是否」等按鈕,這些按鈕的不一樣組合就構成了,對話框的選項模式,參數有靜態常量指定:

JOptionPane.TES_NO_OPTION //只含有「是」「否」選項

JOptionPane.TES_NO_CANCEL_OPTION//還含有取消選項

上面的方法會根據所點擊的選項的不一樣,返回不一樣的整型值

-1——當直接關閉對話框而不作任何選擇時

0——單擊「是」

1——單擊「否」

2——單擊「取消」

——文本輸入對話框

public static String showInputDialog

(Component parentComponent ,Object message,

String title,int messageType)throws………

這也是參數最全的一個方法,參數的意思和上面的同樣,只是會返回在輸入框中輸入的字符串

——選擇輸入對話框

public static Object showInputDialog

(Component parentComponent ,Object message,

String title,int messageType,Icon icon,

Object[] selectionValuse,Object initialSelectionValue)throws………

Object[] selectionValues——通常是String型的字符數組,用來指定候選的字符數組選項;

Object initialSelectionValue——指定框中的初始字符串

該方法會返回選定的字符串,固然,若是直接」取消」,則返回null

《》JTextField和JPasswordField文本編輯框(控件)

——JTextField

(1)構造方法

public JTextField()

public JTextField(String text) ;

public JTextField(int columns);

public JtextField(String text , int columns) ;

text——指定初始文本

columns——指定文本編輯框的長度

——JPasswordField

(1)構造方法

public JPasswrodField()

public JPasswrodField(String text)

public JPasswrodField(int columns)

public JPasswrodField(String ,int columns)

參數意義同樣,只不過在文本框中是以密碼的形式展示的「*********」

應該還可以指定密文顯示字符的類型,能夠查閱官方文檔

兩個類中都有

public String getText()

public void setText()

public void setEditable(boolean)

//用於指定文本框是否可編輯

還有一個有用的成員方法:

public boolean requestFocusInWindow()

噹噹前的文本框調用這個方法後,光標就會自動的回到當前的對話框中,有些軟件中會有這樣的效果,好比QQ中,當咱們在輸入框匯中輸入一段話後,按下回車,這時光標立刻又從上面的顯示框中回到了輸入框中,對於用戶來講很是的方便

《》JButton命令式按鈕/

JCheckBox複選框/

JRadioButton單選按鈕/

首先咱們先將「按鈕系統的繼承關係圖」展現以下:

——JButton

構造方法:

public JButton() ;

public JButton(Icon icon)

public JButton(String text) ;

public JButton(String text,Icon icon) ;

//實際上JButton也是一個容器,能夠容納圖片和文字

——JCheckBox

構造方法

public JCheckBox();

public JCheckBox(Icon icon);

public JCheckBox(Icon icon,boolean selected);

public JCheckBox(String text);

public JCheckBox(String text,boolean);

public JCheckBox(String text,Icon icon,boolean selected);

——JRadioButton

構造方法:

public JRadioButton(String text,Icon icon,

boolean selected) ;

//這是參數最全的一個方法

——三個類的共有方法

public void setSelected(boolean ) ;

public boolean inSelected() ;

此外須要注意的是,像單選按鈕JRadioButton這樣的一組按鈕,大都是選中一個,其餘的所有自動反選,那麼這就須要將一組單選按鈕聯動起來,這要經過一個類——ButtonGroup類來實現,方法以下:

 

 

JRadioButton bt1 = new JRadioButton();

JRadioButton bt2 = new JRadioButton();

JRadioButton bt3 = new JRadioButton();

ButtonGroup rg = new ButtonGroup() ;

rg.add(bt1); rg.add(bt2); rg.add(bt3);

這樣一來這三個按鈕就可以造成一種聯動

ButtonGroup類的兩個方法爲:

public ButtonGroup() ;  //構造方法

public void add(AbstractButton b) ;//將按鈕添加到這個按鈕組中,造成聯動

《》JComboBox下拉式選擇框/

JList列表框/

JTextArea文本區域框/

JScrollPane滾動窗格/

——JComboBox

(1)構造方法:

public JComboBox(Object [ ] item);

//通常使用String型的對象做爲選項

(2)public void setEditable(boolean )

設置當前的下拉框中是否能夠自行輸入文本信息;

若是設爲false,那麼就只可以在下拉框中選擇,而不可以自行輸入內容;

(3)public void setMaximumRowCount(int count)

設置下拉框中可以顯示的最大行數,若是選項數多於count的話,下拉式列表中就會自行顯示滾動條

(4)public void setSelectedIndex(int anIndex);

經過選項的所在位置數,設置被選中的選項

(5)public void setSelectedItem(Object anObject);

經過選項對象,設置被選中的選項

(6)public int getSelectedIndex();

      public Object getSelectedIntdex() ;

——JList列表框

(1)構造方法

public JList(Object[ ]listData)

//參數指定列表框中的全部的選項

(2)public setSelectionMode(int selecttionMode)

//設定列表框的選擇模式,參數指定了所用的模式:

ListSelectionModel.SINGLE_INTERVAL_SELECTION

//指定的常量表明,只可以在列表框中選中其中一項或者一些連續的項

ListSelectionModel.MULTIPLE_INTERVAL_SELECTION

指定的常量表明能夠在選項框中選擇若干非連續項

(3)public void setSelectedIndex( int index)

public void setSelectedIndices( int[ ] indices)

//選定數組指定的全部項

public void setSelectedInterval(int anchor,int lead)

//將下標從anchor到lead之間的全部選項所有選中

(4)public int getSelectedIndex()

public int[ ] getSelectedIndices()

public Object getSelectedValue()

public Object [ ] getSelectedValues()

——JTextArea文本區域框

實際上文本區域框就是用來在窗口中顯示文字的一個控件,單獨所謂建立一個文本區域框是非的簡單的,因爲文字的內容可能很是的多,因此咱們就想要有一個滑動條來解決問題;因此一般咱們將JTextArea和JScrollPane(滾動窗格)配合使用,接下來就分別介紹這兩種控件

(1)文本區域框的構造方法

public JTextArea(String text , int rows , int colums);

rows和colums分別指定行數和列數,text指定顯示的文本

(2)JScrollPane(滾動窗格)的構造方:

public JScrollPane(Component view) ;

可見咱們不只可以將一個文本區域框放入到滾動窗格中,還可以將其餘的Component型的對象放到其中

例如:

JFrame myFrame = new JFrame();

JTextArea myArea = new (「You are right」,20,10) ;

JScrollPane myPane = new JScrollPane(myArea) ;

myFrame.add(myPane) ;

這樣就可以將帶有滾動窗格的文本框顯示到框架中了

在JTextArea成員方法中有這樣一個方法:

public void setCaretPosition(int position) ;

效果是,將光標置於JTextArea文本框中由position指定的位置;

當position=0時,光標指到全部文字的最前面

當position爲當前文本框中的字符總數時,光標指到全部文字的最後面;

將這在和JScrollPane配合使用時很是的有用,好比QQ中當咱們輸入一段話後,按下回車,這段話將顯示在上面的顯示框中,這時咱們調用這個方法,使光標被指到文字最後,就可以自動的將滾動條滾動到當前咱們剛剛輸入的文字處,讓用戶感到很是的方便

(3)其餘的方法咱們就不在多講,查閱官方文檔

《》JSlider(滑動條)和JPanel(普通面板)

——JSlider

(1)構造方法

public JSlider( int min, int max,int value);

public JSlider(int orientation,int min,int max,int value) ;

其中min和max 用來設定滑動條的最大值和最小值,value用來指定當前的滑動條的滑動位置,參數orientation指定滑動條的擺放的方向,有一些靜態常量來指定:

JSlider.HORIZONTAL//水平方向放置

JSlider.VERTICAL//豎直方向放置

(2)public void setValue(int n);

     public int getValue() ;

——JPanel

(1)public JPanel()

(2)public void setPreferredSize(Dimension preferredSize)

這個方法是用來設定建立的面板的大小的,其中的Dimension類是專門用來建立一種表明大小的對象的,這一點很是的有趣,在java的GUI中,有很是多的類是專門用來建立平時很是常見的數據對兒的,如:尺寸對象(Dimension),點對象(Point),圖片對象(ImageIcon)等等;

Dimension類的構造方法:

pubic Dimension(int width , int height);

(3)public void setBackground(Color bg) ;

//設置面板的背景顏色,須要注意的是除了能夠本身建立Color的對象以外,在Color中還有許多的靜態的常量Color對象,這些對象是系統已經設置好的顏色對象,如Color.GREEN就是綠色

相關文章
相關標籤/搜索