




已閱讀5頁,還剩12頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第6章 圖形用戶界面設計基礎 通過學習4個案例,初步掌握Java語言中的圖形用戶界面的概念,以及創建容器、組件、指定布局和相應事件的方法,以及顯示圖片和播放音樂的基本方法。通過11個實例的制作,進一步掌握Java設計過程的基本方法和基本技巧。6.1【案例17】創建窗體l 案例效果 編寫一個程序Beijing,創建一個JFram窗口,并在其中顯示“北京歡迎你!”和“Welcome to Beijing!”,如圖6-1-1所示。通過該案例的學習,可以初步掌握如何在Java語言中實現圖形用戶界面,以及布局管理器的使用等內容。 l 設計過程1、 在記事本中輸入如下程序內容 import java.awt.*;import javax.swing.*;public class Beijingpublic static void main(String args)JFrame frame=new JFrame(2008年奧運會);frame.getContentPane().setLayout(new GridLayout(2,1);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setBounds(100,100,250,150);JButton msg1=new JButton(北京歡迎您!);JButton msg2=new JButton(Welcome to Beijing!);frame.getContentPane().add(msg1);frame.getContentPane().add(msg2);frame.setVisible(true);l 相關知識1圖形用戶界面和標準組件(1)圖形用戶界面簡介:圖形用戶界面(Graphics User Interface,GUI)。它使用圖形的方式,借助菜單、文本框、按鈕等標準界面組件和鼠標及鍵盤的操作,幫助用戶方便地向計算機系統發出指令,并將系統運行的結果同樣以圖形方式顯示給用戶。在圖形用戶界面(GUI)出現之前,用戶需要輸入命令,然后計算機再進行計算并輸出結果。這種人機交流方式需要用戶記憶大量的命令,并且操作煩瑣、復雜、容易出錯。對于計算機的初學者和一般用戶來說,要掌握一種系統或者應用軟件更是困難重重。例如,DOS操作系統雖然具有與Windows同樣強大的文件管理功能,但是其普及程度遠遠不及后者,在很大程度上是因為DOS不具有圖形用戶界面。由此可見,一個友好的圖形用戶界面對于一個軟件的重要性。圖形用戶界面是指包括文本框、標簽、按鈕、單選按鈕、復選框、圖片、菜單、對話框等組件的一個人機交互的界面。在該界面中,用戶不需要記憶任何命令,通過單擊、雙擊、拖動鼠標和簡單的文字輸入就可以輕松地操作計算機完成所有的任務。在Java語言中,可以自行設計程序的圖形用戶界面,使得程序運行效果更加直觀、生動活潑。設計和實現圖形用戶界面的工作主要有以下3個方面。 創建組件(Component):創建組成圖形用戶界面的各種元素。例如,文本框、標簽、按鈕、單選按鈕、復選框、圖片、菜單、對話框等。指定布局(Layout):設置各個組件在圖形用戶界面中的相應位置。響應事件(Event):定義當用戶進行某些操作時,程序的執行情況,從而實現圖形用戶界面的人機交互功能。例如,當單擊按鈕、拖動鼠標或者在文本框中輸入文字時,程序的反應。程序的反應結果一般也是通過圖形用戶界面顯示出來。Java1.0中出現了用來生成圖形用戶界面的包是java.awt,簡稱抽象窗口工具集,即AWT(Abstract Window Toolkit)。它的設計目標是希望構建一個通用的GUI,使得利用它編寫的程序能夠運行在所有的平臺上。(2)GUI標準組件:Java中構成圖形用戶界面的各種元素和成分可以分為兩大類:容器和組件。容器(Container):容器是用來擺放圖形用戶界面中各種組件的一個矩形范圍。一般說來,一個應用程序的圖形用戶界面必須有一個頂層容器,比如一個窗口。在容器中,可以放置各種組件或者其他容器,在新放置的容器內又可以放置各種組件或者其他容器,依此類推就構成一個復雜的圖形界面系統。運行程序時,容器的顯示位置和大小也就是該程序圖形用戶界面的顯示位置和大小。用戶可以自行設置位置和大小的絕對值,也可以依據其所含組件和其他容器的位置及大小來設置相對位置。容器通常都有一個背景,這個背景覆蓋填充整個容器,可以是透明的,也可以使用指定的圖案增加圖形用戶界面的生動性和個性化。組件(Compnent):組件是圖形用戶界面的基本組成單位,它不能包含任何其他的組件或者容器。組件的主要作用是接受用戶的指令,顯示輸出結果,從而完成人機交流。組件的種類很多,例如,按鈕、復選框、下拉菜單等。每一種組件都有其特定的屬性,以及相對應的事件響應方式。在容器中的組件可以按一定的規則來放置,確定它們的相對位置關系和前后排列關系等。除了容器和組件這兩大圖形用戶界面組成部分外,還有一些標志圖案或者幾何圖形,這些主要是用來突出輸出結果和美化組件的。它們不被系統識別,所以不能響應用戶的操作,不具有交互功能。2AWT和Swing在Java語言中,圖形用戶界面是通過java.awt包或者javax.swing包中的類來實現的。java.awt包一般簡稱為AWT,其含義是抽象窗口工具箱(Abstract Windows Toolkit);javax.swing包一般簡稱為Swing,它是Java基礎類庫(Java Fundation Class,JFC)中的一員。(1)AWT提供了多種標準的GUI組件,比如標簽、文本框、按鈕等,以及窗口、面板等容器。使用AWT的布局管理器,可以安排各個組件在容器中的位置。此外,還有前面介紹的繪制幾何圖形、設置文字字體、顏色等功能。在AWT中,專門有一組類用于響應并處理外部事件。Java Applet程序就是屬于AWT中的一種圖形用戶界面實現方法。實際上,AWT提供給編程人員的只是抽象的窗體界面系統,而在其內部會針對每種操作系統,分別使用不同的方式來實現圖形用戶界面。使用這種方式雖然加快了GUI的實現速度,但是因為每種操作系統的組件大小、文字字體和界面布局都不同,所以會造成同一個程序在不同系統中的圖形用戶界面效果不同。例如,在Mac機上設計的一個友好的程序圖形用戶界面,其效果如圖6-1-2(a)所示,將該程序在PC機上運行得到的圖形用戶界面可能不盡如人意,其效果如圖6-1-2(b)所示。為了解決AWT這個嚴重的缺陷,Sun公司在Java 2(Java 1.4)以后的版本中增加了javax.swing包。(2)Swing不僅包含了AWT中幾乎所有的容器和組件,而且增加了很多新的容器和組件。因為AWT中的類已經使用了各個容器和組件的英文名稱,所以Swing中的類需要在原有名稱前加一個字母J,以示區別。例如,與AWT中Button類具有同樣功能的Swing中的類稱為JButton類。Swing中的所有組件都是“輕量級”的,很小巧的;而頂層容器則是“重量級”的,支持“可插入外觀和效果”(Look and Feel)。也就是說,用戶界面的外觀可以在不同的平臺和不同的操作系統上被動態地改變以符合用戶的期望。例如,圖6-1-3展示了4種不同的用戶界面外觀。圖6-1-3 Swing圖形界面效果具有圖形用戶界面的Swing應用程序都具有至少一個頂層容器。Swing中共有4個頂層容器:JFrame、JDialog、JApplet和JWindow。3JFrameJFrame是最簡單最常用的Swing頂層容器,它含有一個內容框架(Content Pane)用來容納所有的組件。對于菜單組件來說,既可以放置到內容框架內,也可以直接添加到JFrame上。這三者的層次關系如圖6-1-4所示,其圖形用戶界面示意圖如圖6-1-5所示。JFrame的創建、設置和顯示方法如下。圖6-1-4 容器和組件的關系 圖6-1-5 示意圖(1)創建JFrame:創建JFrame對象的常用格式有以下兩種。JFrame 對象名=new JFrame();JFrame 對象名=new JFrame(String s);如果使用第二種創建形式,則在創建JFrame的同時,也設置了其窗口標題的內容。例如,下面的語句創建了一個JFrame對象f,且其窗口的標題為“歡迎學習Java語言”。JFrame f=new JFrame(歡迎學習Java語言);(2)添加組件:因為大多數組件不可以直接添加到JFrame中,所以使用JFrame的對象調用其getContentPane()方法,返回一個Frame的內容框架(Content Pane)對象,然后再通過調用add()方法將組件對象添加到內容框架中,格式如下。 JFrame對象名.getContentPane().add(組件對象名);(3)JFrame類中的方法pack()方法:將JFrame的窗口設置為根據其中所含的容器和組件的大小來決定,以能夠容納每個組件的最佳大小為準。setSize(w,h)方法:準確設置JFrame窗口的大小,其中w表示窗口的寬度,h表示窗口的高度。setBounds(x,y,w,h)方法:不僅可以準確設置JFrame窗口的大小,而且還可以準確設置JFrame窗口在屏幕中的位置,其中x表示窗口左上角的x軸坐標值,y表示窗口左上角的y軸坐標值,w表示窗口的寬度,h表示窗口的高度。setBackground(顏色參數)方法:改變JFrame容器的背景顏色。例如,下面的語句將背景顏色設置為藍色。f.setBackground(Color.blue);setTitle(String s)方法:設置窗口的標題。setDefaultCloseOperation(參數)方法:用來控制當JFrame窗口被關閉后,Swing應用程序的下一步操作。一般只使用JFrame.EXIT_ON_CLOSE作為參數,表示窗口被關閉后,自動結束程序運行。(4)顯示JFrame窗口:完成所有JFrame的創建和設置后,需要執行顯示JFrame窗口的語句,才可以在屏幕上看到程序運行后圖形用戶界面的效果。顯示JFrame窗口的格式有兩種,這兩種格式的效果是完全一樣的。JFrame對象名.setVisible(true);JFrame對象名.show();以上是創建和設置JFrame最常用的語句,下面的程序可以創建一個最簡單的不含任何組件的JFrame窗口。import javax.swing.*; /導入Swing包,以便使用其中的類public class Exp public static void main(String args) JFrame f=new JFrame(); /創建容器JFrame的對象f f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /窗口關閉后結束程序 f.setBounds(100,100,300,200); /設置其在屏幕中的顯示位置及大小 f.setTitle(歡迎學習Java語言); /設置窗口的標題 f.setVisible(true); /顯示對象f 將上面的程序保存在“我的Java程序”文件夾中,然后按照運行Java Application的方法輸入命令運行程序,結果如圖6-1-6所示。圖6-1-6 JFrame窗口4JPanelJPanel是Swing中的一個第二層容器,其中可以添加各種組件,但是不能繪制圖形,只能改變其背景顏色。(1)創建JPanel:創建JPanel的常用格式有以下兩種。格式1:JPanel 對象名=new JPanel();格式2:JPanel 對象名=new JPanel(LayoutManager);如果使用第二種創建形式,則在創建JPanel的同時,也設置了其布局方式。因為不是所有的布局管理器都可以作為JPanel構造方法的參數,所以最好使用setLayout()方法來改變布局方式。下一節中將詳細介紹布局管理器。(2)添加組件:使用add()方法可以將組件添加到JPanel中,其格式如下。格式:JPanel對象名.add(參數);其中,使用不同的布局管理器,參數的要求不同。5布局管理器在Java語言的圖形用戶界面設計中,容器和組件的布局管理是非常重要的一個環節。將一個組件加入容器中時,布局管理器決定了所加入的組件的大小和位置。而且布局管理器能自動設定容器中組件的大小和位置,當容器改變大小時,布局管理器能自動地改變其中組件的大小和位置。如果要使用布局管理器,則必須使用“import java.awt.*;”語句將其導入程序中。下面將介紹最常用的3種布局管理器。(1)FlowLayout:FlowLayout是容器Panel和Applet默認使用的布局管理器,如果不專門為Panel或者Applet指定布局管理器,它們就使用FlowLayout。FlowLayout放置組件的方式:組件按照加載的先后順序從左向右排列。一行排滿之后就轉到下一行繼續從左至右排列。在組件不多時,使用這種策略非常方便,但是當容器內的組件增加時,就顯得排列地參差不齊。FlowLayout類的構造方法:FlowLayout類的構造方法有以下3種。public FlowLayout()public FlowLayout(int align)public FlowLayout(int align,int hGap,int vGap)其中,參數align代表每一行組件的對齊方式,其值可以是FlowLayout.CENTER、FlowLayout.TRAILING和FlowLayout.LEADING。它們分別表示居中對齊、右對齊和左對齊。當沒有特別設置該參數時,FlowLayout類默認使用居中對齊方方式。參數hGap和vGap中的數值分別表示組件之間的水平間距和垂直間距。如果不特別設置這一對參數,則FlowLay類默認的間距值為5。如果一個容器需要使用FlowLayout布局方式,則可以通過調用setLayout()方法來實現,其格式如下。格式:對象名.setLayout(new FlowLayout();其中,setLayout()方法是所有容器的父類Container類的方法,所以任何一種容器都可以調用。因為很少使用FlowLayout類中的變量和方法,所以一般只使用關鍵字new調用其構造方法,而不用創建具體的對象。注意:不能使用JFrame類的對象直接調用setLayout()方法,而是要先通過getContentPane()方法,獲得JFrame的內容框架,然后通過內容框架再調用setLayout(),設置布局方式。例如:JFrame frame=new JFrame();frame.getContentPane().setLayout(new FlowLayout(FlowLayout.LEADING);(2)BorderLayout:BorderLayout是容器JFrame類默認使用的布局管理器,如果不專門為JFrame類指定布局管理器,則使用BorderLayout。BorderLayout放置組件的方式:把容器內的空間劃分成上、下、左、右和中央五個顯示區域來放置組件,分別使用參數PAGE_START、PAGE_END、LINE_START、LINE_END和CENTER來表示。如果某個區域沒有組件,則區域中的其他組件可以占據它的空間。例如,如果上部沒有分配組件,則左右兩個部分的組件將向上擴展到容器的最上方。如果左右兩個部分沒有分配組件,則位于中央的組件將橫向擴展到容器的左右邊界。BorderLayout類的構造方法:BorderLayout類的構造方法有以下兩種。public BorderLayout()public BorderLayout(int hGap,int vGap)其中,參數hGap和vGap中的數值分別表示組件之間的水平間距和垂直間距。如果不特別設置這一對參數,則組件之間沒有間距。如果一個容器需要使用BorderLayout布局方式,則可以通過調用setLayout()方法來設置,然后調用add()方法在其中設置組件的具體位置。例如,下面的語句在JPanel類對象p中添加一個JButton類對象btn。JPanel p=new JPanel();JButton btn=new JButton(確 定);p.setLayout(new BorderLayout(40,20);p.add(btn,BorderLayout.PAGE_START);(3)GridLayout:GridLayout布局方式是Swing中設置比較靈活的一種布局管理器。GridLayout放置組件的方式:組件按照加載的先后順序從左向右、從上到下按照設定的行、列數放置,使各組件呈網格狀分布。容器中各組件的大小完全相同。 GridLayout類的構造方法:GridLayout類的構造方法有以下3種。public GridLayout()public GridLayout(int rows,int columns)public GridLayout(int rows,int columns,hGap,vGap)其中,參數rows表示網格的行數,columns表示網格的列數。如果不特別設置這一對參數,則默認行數和列數值均為1。參數hGap和vGap中的數值分別表示組件之間的水平間距和垂直間距。如果不特別設置這一對參數,則組件之間沒有間距。如果一個容器需要使用GridLayout布局方式,則可以通過調用setLayout()方法來實現,其格式如下。格式:對象名.setLayout(new GridLayout(); 例如,下面的語句設置JPanel類對象p的布局為GridLayout,且其中的組件按4行5列的布局方式顯示。JPanel p=new JPanel();p.setLayout(new GridLayout(4,5);6自定義布局實際上,還可以不使用任何一種布局管理器,自行設置每一個組件的位置和大小,其格式如下。格式1:容器對象名.setLayout(null);格式2:組件對象名.setBounds(x,y,w,h);其中第1條語句用來設置布局管理器的值為null,表示不使用任何一種布局管理器。第2條語句是調用setBounds()方法自行設置該組件的位置和大小,其中參數x和y分別為組件左上角的x軸和y軸坐標,參數w和h分別為組件的寬度值和高度值。6.2【案例18】記錄員工個人信息l 案例效果 編寫一個程序Yuangong,運用各種組件創建一個具有圖形用戶界面的員工信息記錄表,如圖所示。用戶在其中輸入和選擇個人信息內容,然后單擊“確定“按鈕,如圖:通過該案例的學習,可以初步掌握如何使用Swing組件創建圖形用戶界面中的組件,以及如何通過BorderFactory類來美化各種組件。 l 設計過程2、 在記事本中輸入如下程序內容 import java.awt.*;import java.awt.event.*;import javax.swing.*;public class yuangong implements ActionListener JTextField name; JTextField age; JRadioButton rb1,rb2; JCheckBox cb1,cb2,cb3,cb4; JComboBox cb; JButton btn; JLabel lblName,lblAge,lblDep,msg; ButtonGroup group = new ButtonGroup(); String depart = 公共關系,財務部,銷售部,企劃部,研發部,人力資源部; public static void main(String args) JFrame f= new JFrame(員工個人信息記錄表); yuangong yuan= new yuangong(); JPanel pane = yuan.init(); f.getContentPane().add(pane); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(400,200); f.setVisible(true); public JPanel init() JPanel p = new JPanel(); JPanel p1 = new JPanel(new GridLayout(2,1); JPanel p2 = new JPanel(new GridLayout(4,1); p1.setBorder(BorderFactory.createTitledBorder(性別); p2.setBorder(BorderFactory.createTitledBorder(特長); lblName= new JLabel(姓名); name = new JTextField(6); lblAge=new JLabel(年齡:); age=new JTextField(4); lblDep = new JLabel(所在部門); msg=new JLabel(請寫員工個人信息,然后按“確定”按鈕); btn=new JButton(確定); btn.addActionListener(this); rb1=new JRadioButton(男性); rb2=new JRadioButton(女性); p1.add(rb1); p1.add(rb2); group.add(rb1); group.add(rb2); cb1=new JCheckBox(美術,false); cb2=new JCheckBox(體育,false); cb3=new JCheckBox(文學,false); cb4=new JCheckBox(音樂,false); p2.add(cb1); p2.add(cb2); p2.add(cb3); p2.add(cb4); JComboBox cb=new JComboBox(depart);/創建下拉列表框 p.add(lblName);p.add(name); p.add(lblAge);p.add(age);p.add(lblDep); p.add(cb); p.add(p1);p.add(p2); p.add(btn);p.add(msg); return p; public void actionPerformed(ActionEvent e) msg.setText(員工的個人信息已經被 系統記錄,謝謝你的合作); l 相關知識1Swing組件大部分Swing組件都具有與前面介紹的AWT組件(例如按鈕、文本框和標簽等)類似的功能,但是Swing組件功能更強大、使用更靈活,而且還具有許多新的組件,例如,選項板、滾動窗口、樹、表格等。下面先介紹一些最基本的Swing組件。(1)JTextField(文本框)類:JTextField的用法與AWT中的組件TextField用法基本一樣,都是用來接收和編輯用戶輸入到文本框中的文本。創建JTextField類對象的格式有以下4種。格式1:JTextField 對象名=new JTextField();格式2: JTextField 對象名=new JTextField(String s); 格式3: JTextField 對象名=new JTextField(int i);格式4: JTextField 對象名=new JTextField(String s,int i);其中,參數s表示在文本框中顯示的內容,i表示文本框的寬度。(2)JButton(按鈕)類:它的用法與AWT中的組件Button用法相似,但是JButton對象除了可以像Button對象一樣顯示文字標簽之外,還可以顯示圖標。創建JButton類對象的格式有以下4種。格式1:JButton 對象名=new JButton();格式2:JButton 對象名=new JButton(String s);格式3:JButton 對象名=new JButton(ImageIcon icon);格式4:JButton 對象名=new JButton(String s,ImageIcon icon);其中,參數icon代表加載的圖片文件對象,參數s是按鈕的標簽內容。如果要給按鈕添加圖片,則要先創建圖片的對象,其方法如下。ImageIcon 對象名=new ImageIcon(圖片文件名);其中,圖片文件名必須要用雙引號括起來,而且如果圖片文件與應用程序保存在不同的文件夾中,則需要給出完整的路徑,否則只給出文件名即可。例如,下面的語句可以創建一個含有圖片和文字的按鈕。ImageIcon icon=new ImageIcon(picture.gif);JButton btn=new JButton(確 定,icon);(3)JLabel(標簽)類:它的用法與AWT中的組件Label用法相似,都是用來顯示一段文本,但是JLabel可以顯示圖標。創建JLabel的格式有以下6種:格式1: JLabel 對象名=new JLabel();格式2:JLabel 對象名=new JLabel(ImageIcon icon);格式3:JLabel 對象名=new JLabel(ImageIcon icon,JLabel.CENTER);格式4:JLabel 對象名=new JLabel(String s,ImageIconicon,JLabel.CENTER);格式5:JLabel 對象名=new JLabel(String s);格式6:JLabel 對象名=new JLabel(String s,JLabel.CENTER);其中,參數icon代表加載的圖片文件對象,參數JLabel.CENTER代表中央對齊方式,其他對齊方式還有JLabel.BOTTOM、JLabel.LEFT、JLabel.RIGHT、JLabel.TOP,分別表示底端對齊、左對齊、右對齊和頂端對齊,參數s是標簽的顯示內容。(4)JPasswordField(密碼框)類:它是JTextField類的子類,它具有JTextField類的所有功能。當用戶在密碼框中輸入字符(也就是密碼)時,JPasswordField會自行用設置的字符代替輸入的字符,達到遮掩密碼的作用JPasswordField類中默認的遮掩密碼的字符是星號“*”,如果想使用其他字符,可以通過其對象調用setEchoChar(char c)方法。在Java 2以后的版本中,JPasswordField類中的getText()方法被getPassword()方法取代。getPassword()方法的作用是將用戶輸入的原始字符以字符型數組數據的形式返回。2BorderFactory類BorderFactory類是Swing中非常有用的一個類,它不僅可以繪制和美化容器或者組件的邊框,還可以提供標題和四周的空白空間。每一個容器或者組件對象都可以具有一個或者多個Border類提供的邊框效果。下面介紹BorderFactory類中常用的幾個設置邊框的類方法。這些方法都可以直接通過BorderFactory類調用,不需要創建對象,其格式如下。格式:對象名.setBorder(BorderFactory.方法名(參數);(1)createLineBorder()方法:它可以給容器或組件添加具有顏色的邊框,其格式有以下兩種。格式1:createLineBorder(Color color)格式2:createLineBorder(Color color,int width其中,參數color代表顏色,參數width代表邊框的寬度。(2)createEtchedBorder()方法:它可以給容器或組件添加具有蝕刻效果的邊框,其格式以下有兩種。格式1:createEtchedBorder(EtchedBorder.RAISED) 格式2:createEtchedBorder(EtchedBorder.LOWERED)其中,參數EtchedBorder.RAISED表示凸起效果,參數EtchedBorder.LOWERED表示凹陷效果。因為RAISED和LOWERED是EtchedBorder類中的類變量,所以必須使用“import javax.swing.border.EtchedBorder;”語句導入EtchedBorder類。(3)createBevelBorder()方法:它方法通過分別加亮和變暗容器或組件的部分邊框,使其具有凸起或者凹陷的效果,其格式有以下兩種。格式1:createBevelBorder(BevelBorder.RAISED)格式2:createBevelBorder(BevelBorder.LOWERED)其中,參數BevelBorder.RAISED表示凸起效果,參數BevelBorder.LOWERED表示凹陷效果。因為RAISED和LOWERED是BevelBorder類中的類變量,所以必須使用“import javax.swing.border.BevelBorder;”語句導入BevelBorder類。(4)createEmptyBorder()方法:它可以給容器或組件添加沒有寬度或者具有特定寬度的空白邊框,其格式有以下兩種。格式1:createEmptyBorder()格式2:createEmptyBorder(int top,int left,int bottom,int right)其中,參數top、left、bottom和right分別代表邊框上、左、下和右部分的寬度。(5)createMatteBorder()方法可以給容器或組件添加四周寬度不同、具有顏色或者圖片的邊框,其格式有以下兩種。格式1:createMatteBorder(int top,int left,int bottom,int right,Color color)格式2:createMatteBorder(int top,int left,int bottom,int right,Icon icon)其中,參數top、left、bottom和right分別代表邊框上、左、下和右部分的寬度,參數color代表邊框顏色,參數icon代表添加的圖片對象。(6)createTitledBorder()方法:它可以給容器或組件添加帶有標題的邊框,其格式有以下3種。格式1:createTitledBorder(String title)格式2:createTitledBorder(Border border,String title)格式3:createTitledBorder(Border border,String title,int posX,int posY)3.JRadioButton類和JCheckBox類在Swing中具有一些選擇功能的組件,例如,單選按鈕,復選框和下拉式列表框等,這些組件一般和if語句聯合使用。(1)JRadioButton(單選按鈕)類:必須使用ButtonGroup將所需的JRadioButton類對象構成一組,使得同一時間只有一個對象被選中。ButtonGroup類只是一個邏輯上的容器,它并不在界面中表現出來。格式有以下六中:格式1:JRadioButton 對象名=new JRadioButton();格式2:JRadioButton 對象名=new JRadioButton(ImageIcon icon);格式3:JRadioButton 對象名=new JRadioButton(ImageIcon icon,boolean selected);格式4:JRadioButton 對象名=new JRadioButton(String s,);格式5:JRadioButton 對象名=new JRadioButton(String s,ImageIcon icon);格式6:JRadioButton 對象名=new JRadioButton(String s,ImageIcon icon,boolean selected););格式7:JRadioButton 對象名=new JRadioButton(String s,ImageIcon icon,boolean selected););其中,icon表示圖標文件,s表示單選按鈕右邊的說明文字,selected表示單選按鈕狀態,true為選中,false表示未選中。(2)JCheckBox(單選按鈕)類:JCheckBox類,同一時間有一個或多個對象被選中。格式有以下六中:格式1:JCheckBox 對象名=new JCheckBox();格式2:JCheckBox 對象名=new JCheckBox(ImageIcon icon);格式3:JCheckBox 對象名=new JCheckBox(ImageIcon icon,boolean selected);格式4:JCheckBox 對象名=new JCheckBox(String s,);格式5:JCheckBox 對象名=new JCheckBox(String s,ImageIcon icon);格式6:JCheckBox 對象名=new JCheckBox(String s,ImageIcon icon,boolean selected););格式7:JCheckBox 對象名=new JCheckBox(String s,ImageIcon icon,boolean selected);其中,icon表示圖標文件,s表示單選按鈕右邊的說明文字,selected表示復選按鈕狀態,true為選中,false表示未選中。4.ActionEvent類和ItemEvent類 當用戶單擊某個JRadioButton類對象時,可以產生一個Action事件和一個或兩個Item事件,也就是說JRadioButton類可以同時響應ActionEvent和ItemEvent。大多數情況下,只需要處理被用戶單擊的對象,所以使用ActionEvent來處理JRadioButton類對象的事件。使用ItemEvent來處理JCheckBox類對象的事件.(1)ActionEvent類:用戶改變一個組件的狀態時,會產生一個ActionEvent事件。處理ActionEvent類事件的步驟:在程序的最前面使用“import java.awt.event.*”語句導入java.awt.event包中的所有類。給程序的主類加上ActionListener接口。將需要監聽的組件注冊,其格式為:對象名.addActionListener(this);在ActionPerformed()方法中編寫具體處理該事件的需要做出的響應。格式為:Public void actionPerformed(ActionEvent e) 語句體當有多個組件需要確定哪個對象產生的事件時,可以使用getSource()方法獲得用戶單擊對象。該方法返回值為Object,通過if語句和e.getSource依次做比較。6.3【案例19】會移動的笑臉l 案例效果 編寫一個程序Face,用戶通過鍵盤上的方向鍵來控制界面中具有笑臉圖案的按鈕的移動,程序運行效果如圖6-3-1所示。通過該案例的學習,可以初步掌握如何在Java語言的事件,包括各種事件的類型,及其應用方法。 l 設計過程1、 在記事本中輸入如下程序內容 import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Face implements KeyListener int x=100; int y=100; int width=50; int height=50; final static int move =5; JButton btn; public static void main(String args) JFrame frame=new JFrame(會移動的笑臉); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Face fac = new Face(); JPanel pane= fac.init(); frame.getContentPane().add(pane); frame.setSize(500,500); frame.setVisible(true); public JPanel init() JPanel p=new JPanel(); p.setLayout(null); ImageIcon icon=new ImageIcon(Face.gif); btn=new JButton(icon); btn.setBounds(x,y,width,height); p.add(btn); btn.addKeyListener(this); return p; public void keyPressed(KeyEvent e) if (e.getKeyCode()=KeyEvent.VK_UP) y=y-move; if (e.getKeyCode()=KeyEvent.VK_DOWN) y=y+move; if (e.getKeyCode()=KeyEvent.VK_LEFT) x=x-move; if (e.getKeyCode()=KeyEvent.VK_RIGHT) x=x+move; btn.setBounds(x,y,width,height); public void keyReleased(KeyEvent e) public void keyTyped(KeyEvent e) l 相關知識1.Java語言的事件:在圖形用戶界面程序運行時,當用戶按下鼠標或者鍵盤時,Java會產生一個事件來響應用戶或者系統的動作。(1)事件類的關系:Java所有的事件都定義在java.awt.event包中,用相應的類來表達不同的事件,所以要在程序中使用這些類,必須先導入java.awt.event.(2)事件處理機制:在Java中,采用委托事件處理模型。事件處理模型將事件源(產生事件的組件)和對事件作出的具體處理(利用一種稱為監聽者Listener的實體來對事件進行具體的處理)分開。不同的組件都會有相應的事件、事件處理器(事件監聽者)及處理方法。 一般說來,要應用某個事件類需要以下4個步驟:在程序的最前面使用“import java.awt.event.*”語句導入java.awt.event包中的所有類。給程序的主類加上 implements xxxListener接口。其中xxx代表事件類型。將需要監聽的組件注冊,其格式為: 對象名.addxxxListener(this);重新編寫抽象接口中的具體內容。2.鍵盤事件當用戶按下和松開鍵盤的按鍵時,所產生的事件稱為鍵盤事件(KeyEvent類)。鍵盤事件的監聽者接口是KeyListener.(1)KeyListener接口中的方法:public void keyPressed(KeyEvent e)方法:該方法響應用戶
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年購房合同全新(4篇)
- 2025年北京市東城區中考語文一模試卷
- 操作數據庫項目五34課件
- 考研復習-風景園林基礎考研試題附參考答案詳解(預熱題)
- 考研復習-風景園林基礎考研試題(考試直接用)附答案詳解
- 風景園林基礎考研資料試題及參考答案詳解(完整版)
- 《風景園林招投標與概預算》試題A帶答案詳解(滿分必刷)
- 2025-2026年高校教師資格證之《高等教育法規》通關題庫附答案詳解(培優)
- 2024年濱州新能源集團有限責任公司及權屬公司公開招聘工作人員遞補筆試備考題庫含答案詳解(精練)
- 2023國家能源投資集團有限責任公司第一批社會招聘筆試備考題庫附答案詳解(培優)
- 室外燈箱安裝合同協議
- 2024年小升初考試試卷
- 包蟲病防治知識小學課件
- 《餐飲行業安全生產標準化評定標準與實施》
- 挖機簡單租賃合同8篇
- 高職院校課程設置存在的問題及改革建議
- 中職高教版(2023)世界歷史-第13課-資本主義世界殖民體系的建立與亞非拉民族獨立運動【課件】
- 辦公軟件基礎課件
- 四新安全教育培訓材料
- 2025上海市商業店鋪出租合同(合同版本)
- 高??蒲姓\信教育
評論
0/150
提交評論