Java中GUI—Swing組件


幾乎所有的我們在javaGUI中用到的所有的組件(組件是幾乎所有的GUI中東西的統稱)都繼承自java.awt.Component類;幾乎所有的具有容器性質的組件都繼承自java.awt.Container類,而且這些組件中一般還會含有這樣的成員對象,什么樣的成員對象呢?——Container類或繼承自Container類的對象

為了能夠將GUI掌握,我們會將幾乎所有的組件加以介紹,主要是將這些組件的基本功能加以介紹,這樣在遇到實際問題時,能夠知道用什么組件進行解決,至於每個組件具體的方法當然就不能完全列出來了,可以查閱官方文檔加以了解

一、首先要了解java中事件的處理模型——委托事件模型

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

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

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

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

(2)構造方法

public JFrame() throws HeadlessException

public JFrame(String title) throws HeadlessException

創建一個視覺上不可見的初始框架(在執行時只會出現一個空的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就是綠色


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM