




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第10章章 圖形界面圖形界面 圖形化用戶界面設(shè)計(jì)圖形化用戶界面設(shè)計(jì)第第10章章 圖形界面圖形界面 JFC簡(jiǎn)介簡(jiǎn)介JFC(Java Foundation Classes,Java基礎(chǔ)類庫(kù))是Java平臺(tái)的一個(gè)重要組成部分,為開發(fā)GUI(Graphics User Interface)提供組件和服務(wù)。 包括5個(gè)部分的API: AWT (Abstract Windowing Toolkit抽象窗口工具集) 、Java 2D(二維圖形工具)、Accessibility(高級(jí)訪問(wèn)工具)、Drag & Drop(拖放功能)和Swing(提供獨(dú)立于運(yùn)行平臺(tái)的GUI構(gòu)造框架)。 第第10章章 圖形界
2、面圖形界面 AWT簡(jiǎn)介簡(jiǎn)介 由于Java程序是跨平臺(tái)的,因此AWT類庫(kù)中的各種操作被定義成在一個(gè)“抽象窗口”中進(jìn)行。使得利用AWT開發(fā)的GUI滿足可移植性。 AWT:Abstract Windowing Toolkit抽象窗口工具集。所有與圖形界面有關(guān)的類都放在java.awt包中。 第第10章章 圖形界面圖形界面 Java Swing簡(jiǎn)介簡(jiǎn)介Swing是一個(gè)用于開發(fā)Java應(yīng)用程序用戶界面的開發(fā)工具包。它以抽象窗口工具包(AWT)為基礎(chǔ)使跨平臺(tái)應(yīng)用程序可以使用任何可插拔的外觀風(fēng)格。工具包中所有的包都是以swing作為名稱,例如: javax.swing, javax.swing.eventS
3、wing與AWT的最大區(qū)別最大區(qū)別是采用本地代碼,獨(dú)立于運(yùn)行平臺(tái),在不同平臺(tái)有一致的look&feel,因此開發(fā)GUI時(shí)更常用的是Swing。 第第10章章 圖形界面圖形界面 javax.swingjavax.swing包中包中JComponentJComponent類是類是java.awtjava.awt包中包中ContainerContainer類的一個(gè)直接子類、是類的一個(gè)直接子類、是java.awtjava.awt包中包中ComponentComponent類的類的一個(gè)間接子類,學(xué)習(xí)一個(gè)間接子類,學(xué)習(xí)GUIGUI編程主要是學(xué)習(xí)掌握使用編程主要是學(xué)習(xí)掌握使用ComponentCom
4、ponent類類的一些重要的子類。的一些重要的子類。(1) Component類的子類類的子類或間接子類創(chuàng)建的對(duì)象稱為一個(gè)或間接子類創(chuàng)建的對(duì)象稱為一個(gè)組件組件。(2) Container的子類的子類或間接子類創(chuàng)建的對(duì)象稱為一個(gè)或間接子類創(chuàng)建的對(duì)象稱為一個(gè)容器容器。(3)可以可以向容器添加組件向容器添加組件。Container類提供了一個(gè)類提供了一個(gè)public方法:方法:add( ),一個(gè)容器可以調(diào)用這個(gè)方法將組件添加到該容器中。,一個(gè)容器可以調(diào)用這個(gè)方法將組件添加到該容器中。(4)容器調(diào)用容器調(diào)用removeAll()方法可以移掉容器中的全部組件;調(diào)用方法可以移掉容器中的全部組件;調(diào)用rem
5、ove(Component c)方法可以移掉容器中參數(shù)方法可以移掉容器中參數(shù)c指定的組件。指定的組件。(5) 容器本身也是一個(gè)組件,因此可以把容器本身也是一個(gè)組件,因此可以把一個(gè)容器添加到另一個(gè)一個(gè)容器添加到另一個(gè)容器容器中實(shí)現(xiàn)容器的嵌套。中實(shí)現(xiàn)容器的嵌套。(6)每當(dāng)容器添加新的組件或移掉組件時(shí),應(yīng)當(dāng)讓容器調(diào)用每當(dāng)容器添加新的組件或移掉組件時(shí),應(yīng)當(dāng)讓容器調(diào)用validate()方法,以保證容器中的組件能正確顯示出來(lái)。方法,以保證容器中的組件能正確顯示出來(lái)。第第10章章 圖形界面圖形界面 1、組件與容器組件與容器1 組件:文本框、按鈕、單選框、窗體、對(duì)話框等。2 容器:可以包含其他組件的組件包含
6、其他組件的組件稱為容器。幾乎所有組件都是容器,但一般只有窗體(Frame)系列、面板(Panel)系列等實(shí)際作為容器來(lái)用。3 組件必須放在容器內(nèi)才能顯示。第第10章章 圖形界面圖形界面 javax.swing包提供了功能更為強(qiáng)大的用來(lái)設(shè)計(jì)GUI的類。java.awt和javax.swing包中一部分類的層次關(guān)系的UML類圖如圖。 第第10章章 圖形界面圖形界面 2、窗口窗口 Java提供的提供的JFrame類的實(shí)例是一個(gè)底層容器,即類的實(shí)例是一個(gè)底層容器,即通常所稱的窗口。其他組件必須被添加到底層容器中,通常所稱的窗口。其他組件必須被添加到底層容器中,以便借助這個(gè)地層容器和操作系統(tǒng)進(jìn)行信息交互
7、。以便借助這個(gè)地層容器和操作系統(tǒng)進(jìn)行信息交互。 JFrameJFrame類是類是ContainerContainer類的間接子類。當(dāng)需要一個(gè)類的間接子類。當(dāng)需要一個(gè)窗口時(shí),可使用窗口時(shí),可使用JFrameJFrame或其子類創(chuàng)建一個(gè)對(duì)象。或其子類創(chuàng)建一個(gè)對(duì)象。 第第10章章 圖形界面圖形界面 JFrameJFrame常用方法常用方法 JFrameJFrame()() 創(chuàng)建一個(gè)無(wú)標(biāo)題的窗口。創(chuàng)建一個(gè)無(wú)標(biāo)題的窗口。JFrame(StringJFrame(String s) s) 創(chuàng)建標(biāo)題為創(chuàng)建標(biāo)題為s s的窗口。的窗口。public void setBounds(int a,int b,int w
8、idth,intpublic void setBounds(int a,int b,int width,int height height 設(shè)置窗口的初始位置是(a,b),即距屏幕左面a個(gè)像素、距屏幕上方b個(gè)像素;窗口的寬是width,高是height。public void setSize(int width,intpublic void setSize(int width,int height) height) 設(shè)置窗口的大小。public void setLocation(int x,intpublic void setLocation(int x,int y) y) 設(shè)置窗口的位置,默
9、認(rèn)位置是(0,0)。public void setVisible(booleanpublic void setVisible(boolean b) b) 設(shè)置窗口是否可見,窗口默認(rèn)是不可見的。public void setResizable(booleanpublic void setResizable(boolean b b) ) 設(shè)設(shè)置窗口是否可調(diào)整大小,默認(rèn)可調(diào)整大小。public void dispose()public void dispose() 撤消當(dāng)前窗口,并釋放當(dāng)前窗口所使用的資源。public void setExtendedState(intpublic void set
10、ExtendedState(int state) state) 設(shè)置窗口的擴(kuò)展?fàn)顟B(tài).第第10章章 圖形界面圖形界面 JFrameJFrame常用方法常用方法 public void setDefaultCloseOperation(intpublic void setDefaultCloseOperation(int operation) operation) 該方法用來(lái)設(shè)置單擊窗體右上角的關(guān)閉圖標(biāo)后,程序會(huì)做出怎樣的處理。參數(shù)operation取JFrame類中的下列int型static常量,程序根據(jù)參數(shù)operation取值做出不同的處理:DO_NOTHING_ON_CLOSE 什么也不做
11、。 HIDE_ON_CLOSE 隱藏當(dāng)前窗口。DISPOSE_ON_CLOSE 隱藏當(dāng)前窗口,并釋放窗體占有的其它資源。EXIT_ON_CLOSE 結(jié)束窗口所在的應(yīng)用程序。第第10章章 圖形界面圖形界面 11import javax.swing.*;import java.awt.*;public class Example9_1 public static void main(String args) JFrame window1=new JFrame(第一個(gè)窗口); JFrame window2=new JFrame(第二個(gè)窗口); Container con=window1.getCon
12、tentPane(); con.setBackground(Color.yellow) ; window1.setBounds(60,100,188,108); window2.setBounds(260,100,188,108); window1.setVisible(true);window1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); window2.setVisible(true); window2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 第第10章章 圖形界面圖形界面 菜
13、單條、菜單、菜單項(xiàng)菜單條、菜單、菜單項(xiàng) 1 1菜單條菜單條 JComponent類的子類JMenubar負(fù)責(zé)創(chuàng)建菜單條,JFrame類的方法setJMenuBar(JMenuBarsetJMenuBar(JMenuBar bar) bar) 該方法將菜單條添加到窗口的頂端 2 2菜單菜單 JComponent類的子類JMenu負(fù)責(zé)創(chuàng)建菜單, 主要方法有以下幾種: public void add(JMenuItem public void add(JMenuItem item) item)向菜單增加由參數(shù)item指定的菜單選項(xiàng)。 public JMenuItem getItem(intpubli
14、c JMenuItem getItem(int n) n) 得到指定索引處的菜單選項(xiàng)。 public int getItemCountpublic int getItemCount()() 得到菜單選項(xiàng)的數(shù)目。3.3.菜單項(xiàng)菜單項(xiàng) JComponent類的子類JMenuItem負(fù)責(zé)創(chuàng)建菜單項(xiàng), 主要方法有以下幾種: JMenuItem(StringJMenuItem(String s) s) 構(gòu)造有標(biāo)題的菜單項(xiàng)。 JMenuItem(StringJMenuItem(String text, Icon icon) text, Icon icon) 構(gòu)造有標(biāo)題和圖標(biāo)的菜單項(xiàng) public void
15、 setAccelerator(KeyStroke keyStrokepublic void setAccelerator(KeyStroke keyStroke) ) 為菜單項(xiàng)設(shè)置快捷鍵。第第10章章 圖形界面圖形界面 菜單條、菜單、菜單項(xiàng)菜單條、菜單、菜單項(xiàng) 4嵌入子菜單嵌入子菜單 JMenu是JMenuItem的子類,因此菜單本身也是一個(gè)菜單項(xiàng),當(dāng)把一個(gè)菜單看作菜單項(xiàng)添加到某個(gè)菜單中時(shí),稱這樣的菜單為子菜單。5菜單上的圖標(biāo)菜單上的圖標(biāo) 為了使菜單項(xiàng)有一個(gè)圖標(biāo),可以用圖標(biāo)類Icon聲明一個(gè)圖標(biāo),然后使用其子類ImageIcon類創(chuàng)建一個(gè)圖標(biāo),如:Icon icon = new ImageI
16、con(a.gif);然后菜單項(xiàng)調(diào)用setIcon(Icon icon) 方法將圖標(biāo)設(shè)置為icon。第第10章章 圖形界面圖形界面 14import javax.swing.*;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;public class WindowMenu extends JFrame JMenuBar menubar; JMenu menu,subMenu; JMenuItem itemLiterature,itemCooking; public WindowMenu() public Windo
17、wMenu(String s,int x,int y,int w,int h) init(s); setLocation(x,y); setSize(w,h); setVisible(true); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 第第10章章 圖形界面圖形界面 15 void init(String s) setTitle(s); /設(shè)置窗口的標(biāo)題 menubar=new JMenuBar(); menu=new JMenu(菜單); subMenu=new JMenu(體育話題); itemLiterature=new J
18、MenuItem(文學(xué)話題,new ImageIcon(a.gif); itemCooking=new JMenuItem(烹飪?cè)掝},new ImageIcon(b.gif); itemLiterature.setAccelerator(KeyStroke.getKeyStroke(A); itemCooking.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK); menu.add(itemLiterature); menu.addSeparator(); /在菜單之間增加分隔線 menu.add
19、(itemCooking); menu.add(subMenu); subMenu.add(new JMenuItem(足球,new ImageIcon(c.gif); subMenu.add(new JMenuItem(籃球,new ImageIcon(d.gif); menubar.add(menu); setJMenuBar(menubar); 第第10章章 圖形界面圖形界面 16public class Example9_2 public static void main(String args) WindowMenu win=new WindowMenu(帶菜單的窗口,20,30,2
20、00,190); 第第10章章 圖形界面圖形界面 3、常用組件與布局常用組件與布局 可以使用可以使用JComponentJComponent的子類的子類JTextFieldJTextField創(chuàng)建各種組創(chuàng)建各種組件。利用組件可以完成應(yīng)用程序與用戶的交互及事件件。利用組件可以完成應(yīng)用程序與用戶的交互及事件處理等。處理等。 第第10章章 圖形界面圖形界面 常用組件常用組件 1文本框:由JComponent的子類JTextField創(chuàng)建文本框。2文本區(qū):由JComponent的子類JTexArea創(chuàng)建文本區(qū)。3按鈕:由JComponent的子類JButton類用來(lái)創(chuàng)建按鈕。4標(biāo)簽:由JCompone
21、nt的子類JLabel類用來(lái)創(chuàng)建標(biāo)簽。5選擇框:由JComponent的子類JCheckBox類用來(lái)創(chuàng)建選擇框。6單選按鈕:由JComponent的子類JRadioButton類用來(lái)創(chuàng)建單項(xiàng)選擇框。7下拉列表:由JComponent的子類JComboBox類用來(lái)創(chuàng)建下拉列表。8密碼框:由JComponent的子類JPasswordField創(chuàng)建密碼框。可以使用setEchoChar(char c)重新設(shè)置回顯字符 。調(diào)用char getPassword()方法可以返回實(shí)際的密碼。第第10章章 圖形界面圖形界面 文本框JTextField和文本區(qū)JTextArea單行文本框 JTextField
22、和多行文本區(qū)域JTextArea,它們都是JTextComponent的子類。 JTextField類的構(gòu)造方法類的構(gòu)造方法有四種: public JTextField():構(gòu)造一個(gè)新的單行文本輸入框; public JTextField(int columns):構(gòu)造一個(gè)指定長(zhǎng)度的單行文本輸入框; public JTextField(String text):構(gòu)造一個(gè)指定初始內(nèi)容的單行文本輸入框; public JTextField(String tex, int columns):構(gòu)造一個(gè)指定長(zhǎng)度、指定初始內(nèi)容的單行文本輸入框。第第10章章 圖形界面圖形界面 JTextArea類類: pu
23、blic JTextArea():構(gòu)造一個(gè)多行文本輸入框; public JTextArea(int rows, int columns):構(gòu)造一個(gè)指定長(zhǎng)度和寬度的多行文本輸入框,兩個(gè)參數(shù)分別為長(zhǎng)度和寬度; public JTextArea(String text):構(gòu)造一個(gè)顯示指定文字的多行文本輸入框; public JTextArea(String text, int rows, int columns):構(gòu)造一個(gè)指定長(zhǎng)度和寬度,并顯示指定文字的多行文本輸入框; public JTextArea(String text, int rows, int columns, int scrollb
24、ars): Scrollbars用于指定滾動(dòng)條的顯示形式,缺省值為SCROLLBARS_BOTH。第第10章章 圖形界面圖形界面 其他方法其他方法: public void append(String str):在文本尾部增加文本; public void insert(String str, int pos):在指定位置插入文本; public void replaceRange(String str, int start, int end):替換某些文本。JTextField和和JTextArea共有的共有的: public String getText():得到組件中的文本; publi
25、c String getSelectedText():得到組件中當(dāng)前被選中的的文本; public void selectAll():選擇整個(gè)文本。第第10章章 圖形界面圖形界面 第第10章章 圖形界面圖形界面 按鈕JButton構(gòu)造方法:構(gòu)造方法: public JButton():構(gòu)造一個(gè)沒(méi)有提示文字的按鈕; public JButton(String s):構(gòu)造一個(gè)以給定字符串為提示文字的按鈕。 例如,下面的語(yǔ)句定義一個(gè)“OK”按鈕: Button b = new JButton(OK);獲得或修改按鈕對(duì)象的設(shè)置獲得或修改按鈕對(duì)象的設(shè)置:p public String getLabel(
26、):獲得按鈕上的提示文字p public void setLabel(String s):改變按鈕上的提示文字p setActionCommand(String s):為按鈕設(shè)置一個(gè)命令名,這個(gè)命令名在響應(yīng)事件時(shí)可能會(huì)用到,缺省的命令名為按鈕上的提示文字。第第10章章 圖形界面圖形界面 標(biāo)簽JLabel 標(biāo)簽是最簡(jiǎn)單的組件,實(shí)質(zhì)上就是一段文字,不生成動(dòng)作事件。JLabel類中定義了三種構(gòu)造方法構(gòu)造方法:public JLabel():構(gòu)造一個(gè)空的標(biāo)簽,不顯示任何內(nèi)容。public JLabel(String text):構(gòu)造建立一個(gè)以String為內(nèi)容的標(biāo)簽。public JLabel(Str
27、ing text,int alignment):定義一個(gè)標(biāo)簽。參數(shù)alignment代表一個(gè)給定的對(duì)齊方式,可以是靠左LEFT 、靠右RIGHT和居中CENTER ,缺省設(shè)置是靠左。下面的語(yǔ)句定義一個(gè)居中的Name標(biāo)簽: Label l1 = new JLabel(Name, CENTER);第第10章章 圖形界面圖形界面 JLabel類還定義了一些方法來(lái)獲得或修改標(biāo)簽對(duì)象獲得或修改標(biāo)簽對(duì)象的設(shè)置的設(shè)置: public String getText():獲得標(biāo)簽上的文字。 public void setText(String text):修改標(biāo)簽上的文字。 public int getAlig
28、nment():獲得標(biāo)簽的對(duì)齊方式。 public void setAlignment(int alignment):設(shè)置標(biāo)簽的對(duì)齊方式。第第10章章 圖形界面圖形界面 4、選擇框(JCheckBox)與單選按鈕(JRadioButton) 創(chuàng)建選擇框可以使用下面幾種構(gòu)造方法構(gòu)造方法:public JCheckbox():創(chuàng)建一個(gè)沒(méi)有提示文字的復(fù)選框條目,未被選中public JCheckbox(String label):構(gòu)造一個(gè)以label為提示文字的復(fù)選框條目,未被選中。public JCheckbox(String label, boolean state):構(gòu)造一個(gè)以label為提示
29、文字的復(fù)選框條目,初始狀態(tài)由state指定。第第10章章 圖形界面圖形界面 其他方法:其他方法:public boolean getState():確定復(fù)選框是否被選中public void setState(boolean):改變選中狀態(tài)創(chuàng)建單選按鈕創(chuàng)建單選按鈕:public JRadioButton(String label, ButtonGroup group,boolean state);其他方法其他方法:public boolean getState():獲取當(dāng)前選中狀態(tài)第第10章章 圖形界面圖形界面 下拉列表(JComboBox) 構(gòu)造方法構(gòu)造方法:public JComboBox
30、();添加列表項(xiàng)添加列表項(xiàng):public synchronized void addItem(String item); 其他方法其他方法:public void insert(String item, int index):在指定位置增加條目。 public void remove(int position); public void remove(String item):刪除指定的條目 public void removeAll():刪除所有條目。 public String getSelectedItem(); public int getSelectedIndex():返回被選中條目
31、第第10章章 圖形界面圖形界面 29組件顏色與字體的設(shè)置組件顏色與字體的設(shè)置Color類與類與Font類分別定義了一些顏色、字體,類分別定義了一些顏色、字體,可以創(chuàng)建新的顏色與字體。可以創(chuàng)建新的顏色與字體。Color c=new Color(r,g,b);Font f=new Font();第第10章章 圖形界面圖形界面 1. 組件的顏色public void setBackground(Color c):設(shè)置背景色public void setForeground(Color c):設(shè)置前景色public Color getBackground():獲取背景色public Color get
32、Foreground():獲取前景色第第10章章 圖形界面圖形界面 2. 組件的字體public Font getFont():獲取組件上的字體public void setFont(Font f):設(shè)置字體Font 構(gòu)造方法:public Font(String name, int style, int size)系統(tǒng)字體庫(kù)獲取:String names=GraphicsEnvironment. getLocalGraphicsEnvironment().getAvailableFontFamilyNames();或:String names=Toolkit.getDefaultToolki
33、t().getFontList();第第10章章 圖形界面圖形界面 3. 組件的大小和位置public void setSize(int width, int height):設(shè)置大小public Dimension getSize():獲取大小public void setLocation(int x, int y):設(shè)置位置public Point getLocation():獲取位置點(diǎn)public setBounds(int x, int y, int width, int height):設(shè)置邊界(常用于null布局)public Rectangle getBounds():獲取邊界矩
34、形4. 激活和可見性public void setEnabled(boolean b):設(shè)置是否可用public void setVisible(boolean b):設(shè)置是否可見第第10章章 圖形界面圖形界面 33import java.awt.*;import javax.swing.*;public class ComponentInWindow extends JFrame JTextField text; JButton button; JCheckBox checkBox1,checkBox2,checkBox3; JRadioButton radio1,radio2; Butto
35、nGroup group; JComboBox comBox; JTextArea area; public ComponentInWindow() init(); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 第第10章章 圖形界面圖形界面 34void init() setLayout(new FlowLayout(); add(new JLabel(文本框:); text=new JTextField(10); add(text); add(new JLabel(按鈕:); button=new JBu
36、tton(確定); add(button); add(new JLabel(選擇框:); checkBox1 = new JCheckBox(喜歡音樂(lè)); checkBox2 = new JCheckBox(喜歡旅游); checkBox3 = new JCheckBox(喜歡籃球); add(checkBox1); add(checkBox2); add(checkBox3); 第第10章章 圖形界面圖形界面 35 add(new JLabel(單選按鈕:); group = new ButtonGroup(); radio1 = new JRadioButton(男); radio2 =
37、new JRadioButton(女); group.add(radio1); group.add(radio2); add(radio1); add(radio2); add(new JLabel(下拉列表:); comBox = new JComboBox(); comBox.addItem(音樂(lè)天地); comBox.addItem(武術(shù)天地); comBox.addItem(象棋樂(lè)園); add(comBox); add(new JLabel(文本區(qū):); area = new JTextArea(6,12); add(new JScrollPane(area); 第第10章章 圖形界
38、面圖形界面 36public class Example9_3 public static void main(String args) ComponentInWindow win=new ComponentInWindow(); win.setBounds(100,100,310,260); win.setTitle(常用組件); 第第10章章 圖形界面圖形界面 常用容器常用容器 JComponent JComponent是是ContainerContainer的子類,因此的子類,因此JComponentJComponent子類創(chuàng)建的組件也子類創(chuàng)建的組件也都是容器。容器經(jīng)常用來(lái)添加組件。都是
39、容器。容器經(jīng)常用來(lái)添加組件。JframeJframe是底層容器,本節(jié)提到的容是底層容器,本節(jié)提到的容器被習(xí)慣地稱做中間容器,中間容器必須被添加到底層容器中才能發(fā)揮器被習(xí)慣地稱做中間容器,中間容器必須被添加到底層容器中才能發(fā)揮作用。作用。 1 1JPanelJPanel 面板面板: :使用使用JPanelJPanel創(chuàng)建面板,再向這個(gè)面板添加組件,然后創(chuàng)建面板,再向這個(gè)面板添加組件,然后把這個(gè)面板添加到其它容器中。把這個(gè)面板添加到其它容器中。JPanelJPanel面板的默認(rèn)布局是面板的默認(rèn)布局是FlowLayoutFlowLayout布布局。局。 2 2滾動(dòng)窗格滾動(dòng)窗格JScrollPaneJ
40、ScrollPane: :可以將文本區(qū)放到一個(gè)滾動(dòng)窗格中。可以將文本區(qū)放到一個(gè)滾動(dòng)窗格中。 JScorollPane scroll=new JScorollPane(new JTextAreaJScorollPane scroll=new JScorollPane(new JTextArea(); (); 3 3拆分窗格拆分窗格JSplitPaneJSplitPane: :窗格有兩種類型:水平拆分和垂直拆分窗格有兩種類型:水平拆分和垂直拆分JSplitPaneJSplitPane的兩個(gè)常用的構(gòu)造方法:的兩個(gè)常用的構(gòu)造方法: JSplitPane(intJSplitPane(int a,Comp
41、onent b,Component c) a,Component b,Component c) JSplitPane(int a, boolean JSplitPane(int a, boolean b,Component c,Component d) b,Component c,Component d) 4 4JLayeredPaneJLayeredPane分層窗格分層窗格: :分層窗格使用分層窗格使用add(Jcomponent com, intadd(Jcomponent com, int layer); layer);添加組件添加組件comcom,并指定,并指定comcom所在層所在層
42、 public void setLayer(Component c,intpublic void setLayer(Component c,int layer) layer)可以重新設(shè)置組件可以重新設(shè)置組件c c所所在的層在的層public int getLayer(Componentpublic int getLayer(Component c) c)可以獲取組件可以獲取組件c c所在的層數(shù)。所在的層數(shù)。 第第10章章 圖形界面圖形界面 常用布局常用布局 容器可以使用方法容器可以使用方法setLayout(布局對(duì)象布局對(duì)象);設(shè)置自己的布局設(shè)置自己的布局, ,控制組件在控制組件在容器中的位置
43、。容器中的位置。 1 1FlowLayoutFlowLayout布局布局 : : 1)1)創(chuàng)建創(chuàng)建布局對(duì)象布局對(duì)象 FlowLayout flow=new FlowLayoutFlowLayout flow=new FlowLayout();(); 2)容器容器concon使用布局對(duì)象使用布局對(duì)象con.setLayout(flowcon.setLayout(flow);); 3)con 3)con可以使用可以使用ContainerContainer類提供的類提供的addadd方法方法將組件順序地添加到容器中將組件順序地添加到容器中; ; FlowLayout FlowLayout布局對(duì)象調(diào)用
44、相應(yīng)的方法可以重新設(shè)置布局的對(duì)齊方式等布局對(duì)象調(diào)用相應(yīng)的方法可以重新設(shè)置布局的對(duì)齊方式等. .布局原則是將組件從左向右、從上向下排列,如果本行放不下這個(gè)組件,就放入下一行。 第第10章章 圖形界面圖形界面 39import java.awt.* ;import javax.swing.*;public class ExGui private JFrame f ;private JButton b1 ;private JButton b2 ;public static void main( String args )ExGui guiwindow = new ExGui( );guiWindow
45、.go( ) ;public void go( )f = new JFrame(“GUI example”) ;f.setLayout( new FlowLayout( ) ;b1 = new JButton(“Press Me”);b2 = new JButton(“Dont Press Me “);f.add( b1) ;f.add(b2);f.pack( );f.setVisible(true) ;GUI examplePress MeDont Press Me第第10章章 圖形界面圖形界面 常用布局常用布局 2 2BorderLayoutBorderLayout布局布局 : : Win
46、dow型容器的默認(rèn)布局。型容器的默認(rèn)布局。 BorderLayout將容器分為將容器分為5個(gè)區(qū)域,分別使用地理上的方向個(gè)區(qū)域,分別使用地理上的方向NORTH、SOUTH、WEST、EAST和和CENTER靜態(tài)常量來(lái)表靜態(tài)常量來(lái)表示,其中前四個(gè)方向占據(jù)容器的四邊,而示,其中前四個(gè)方向占據(jù)容器的四邊,而Center方向占據(jù)剩下方向占據(jù)剩下的空白,中間的區(qū)域最大。的空白,中間的區(qū)域最大。 使用使用BorderLayoutBorderLayout布局的容器布局的容器concon,可以使用,可以使用addadd方法將一方法將一個(gè)組件個(gè)組件b b添加到中心區(qū)域:添加到中心區(qū)域: con.add(b,Bor
47、derLayout.CENTER); 或或 con.add(BorderLayour.CENTER,b); 第第10章章 圖形界面圖形界面 3 3CardLayoutCardLayout 布局布局 用用CardLayout 的容器可以容納多個(gè)組件,這些組件被層疊放如容器中,的容器可以容納多個(gè)組件,這些組件被層疊放如容器中,最先加入容器的是第一張最先加入容器的是第一張(在最上面在最上面),依次向下排序。依次向下排序。 使用使用CardLayoutCardLayout的一般步驟如下:的一般步驟如下: 1)1)創(chuàng)建創(chuàng)建CardLayoutCardLayout對(duì)象對(duì)象 CardLayout card=
48、new CardLayout(); 2) 2)為容器設(shè)置布局為容器設(shè)置布局 con.setLayout(card); 3) 3)容器調(diào)用容器調(diào)用add(String s,Component b)將組件將組件b b加入容器,并給出加入容器,并給出了顯示該組件的代號(hào)了顯示該組件的代號(hào)s s。 4)4)布局對(duì)象布局對(duì)象cardcard用用CardLayoutCardLayout類提供的類提供的show()show()方法,顯示容器方法,顯示容器concon中組件中組件代號(hào)為代號(hào)為s s的組件:的組件:card.show(con,s);常用布局常用布局 另外顯示組件的方法還有:另外顯示組件的方法還有:
49、 card.first(con) card.last(con) card.next(con) card.previous(con) 第第10章章 圖形界面圖形界面 常用布局常用布局 4 4GridLayoutGridLayout布局布局 : : GridLayoutGridLayout布局策略是把容器劃分成若干行乘若干列的網(wǎng)格區(qū)域,布局策略是把容器劃分成若干行乘若干列的網(wǎng)格區(qū)域,組件就位于這些劃分出來(lái)的小格中。組件就位于這些劃分出來(lái)的小格中。 GridLayoutGridLayout布局編輯器的一般步布局編輯器的一般步驟如下:驟如下: 1)1)創(chuàng)建布局對(duì)象,指定劃分網(wǎng)格的行數(shù)創(chuàng)建布局對(duì)象,指定
50、劃分網(wǎng)格的行數(shù)m m和列數(shù)和列數(shù)n n GridLayout grid=new new GridLayout(10,8); 2) 2)使用使用GridLayoutGridLayout布局的容器調(diào)用方法布局的容器調(diào)用方法add(Component c)將組件將組件c c加加入容器。入容器。 第第10章章 圖形界面圖形界面 43import javax.swing.*;import java.awt.*;class WinGrid extends JFrame GridLayout grid; WinGrid() grid=new GridLayout(12,12); setLayout(grid
51、); Label label=new Label1212; for(int i=0;i12;i+) for(int j=0;j=2) area.setText(鼠標(biāo)連擊,位置:+(+e.getX()+,+e.getY()+); 第第10章章 圖形界面圖形界面 2 2使用使用MouseMotionListenerMouseMotionListener接口可以處理以下兩種操作觸發(fā)的接口可以處理以下兩種操作觸發(fā)的鼠標(biāo)事件,在事件源上拖動(dòng)鼠標(biāo)、在事件源上移動(dòng)鼠標(biāo)。鼠標(biāo)事件,在事件源上拖動(dòng)鼠標(biāo)、在事件源上移動(dòng)鼠標(biāo)。 事件源注冊(cè)監(jiān)視器的方法是事件源注冊(cè)監(jiān)視器的方法是 addMouseMotionListe
52、ner(MouseMotionListener listener)。 MouseMotionListenerMouseMotionListener接口接口中有如下方法:中有如下方法: mouseDragged(MouseEventmouseDragged(MouseEvent) ) 負(fù)責(zé)處理拖動(dòng)鼠標(biāo)觸發(fā)的鼠標(biāo)事件。負(fù)責(zé)處理拖動(dòng)鼠標(biāo)觸發(fā)的鼠標(biāo)事件。 mouseMoved(MouseEventmouseMoved(MouseEvent) ) 負(fù)責(zé)處理移動(dòng)鼠標(biāo)觸發(fā)的鼠標(biāo)事件。負(fù)責(zé)處理移動(dòng)鼠標(biāo)觸發(fā)的鼠標(biāo)事件。4.5、MouseEvent事件事件 第第10章章 圖形界面圖形界面 4.6、焦點(diǎn)事件焦點(diǎn)事件
53、 1 1焦點(diǎn)事件源焦點(diǎn)事件源 : :組件可以觸發(fā)焦點(diǎn)事件。 2 2注冊(cè)監(jiān)視器注冊(cè)監(jiān)視器: :組件可以使用 addFocusListener(FocusListener listener) 注冊(cè)焦點(diǎn)事件監(jiān)視器。 3 3FocusListener接口接口 : : 創(chuàng)建監(jiān)視器的類必須要實(shí)現(xiàn)FocusListener接口,該接口有兩個(gè)方法: public void focusGained(FocusEvent e) public void focusLost(FocusEvent e) 當(dāng)發(fā)生FocusEvent事件時(shí),監(jiān)視器調(diào)用類實(shí)現(xiàn)的接口中的相應(yīng)方法。 4 4組件也可調(diào)用 public boole
54、an requestFocusInWindow() 方法可以獲得輸入焦點(diǎn)。 第第10章章 圖形界面圖形界面 4.7、鍵盤事件鍵盤事件 當(dāng)一個(gè)組件處于激活狀態(tài)時(shí),敲擊鍵盤上一個(gè)鍵就導(dǎo)致這個(gè)當(dāng)一個(gè)組件處于激活狀態(tài)時(shí),敲擊鍵盤上一個(gè)鍵就導(dǎo)致這個(gè)組件觸發(fā)鍵盤事件。組件觸發(fā)鍵盤事件。1.1.某個(gè)組件使用某個(gè)組件使用addKeyListeneraddKeyListener方法注冊(cè)監(jiān)視器方法注冊(cè)監(jiān)視器。2.2.接口接口KeyListenerKeyListener中有如下方法:中有如下方法: public void keyPressed(KeyEvent e), public void keyTyped(Ke
55、yEvent e), public void KeyReleased(KeyEvent e) 3.3.相關(guān)方法:相關(guān)方法: public int getKeyCode()判斷哪個(gè)鍵被按下、敲擊或釋放,返回一個(gè)鍵碼值 。 getKeyChar()判斷哪個(gè)鍵被按下、敲擊或釋放,返回鍵上的字符。第第10章章 圖形界面圖形界面 71public class Example9_12 public static void main(String args) Win win=new Win(); win.setTitle(輸入序列號(hào)); win.setBounds(10,10,460,360); 通過(guò)處理鍵
56、盤事件來(lái)實(shí)現(xiàn)軟件序列號(hào)的輸入。通過(guò)處理鍵盤事件來(lái)實(shí)現(xiàn)軟件序列號(hào)的輸入。第第10章章 圖形界面圖形界面 72import java.awt.event.*;import javax.swing.*;public class Police implements KeyListener,FocusListener public void keyPressed(KeyEvent e) JTextField t=(JTextField)e.getSource(); if(t.getCaretPosition()=6) t.transferFocus(); public void keyTyped(Key
57、Event e) public void keyReleased(KeyEvent e) public void focusGained(FocusEvent e) JTextField text=(JTextField)e.getSource(); text.setText(null); public void focusLost(FocusEvent e)第第10章章 圖形界面圖形界面 73import java.awt.*;import javax.swing.*;public class Win extends JFrame JTextField text=new JTextField
58、3; Police police; JButton b; Win() setLayout(new FlowLayout(); police = new Police(); for(int i=0;i3;i+) texti=new JTextField(7); texti.addKeyListener(police); /監(jiān)視鍵盤事件 texti.addFocusListener(police); add(texti); b=new JButton(確定); add(b); text0.requestFocusInWindow(); setVisible(true); setDefaultClo
59、seOperation(JFrame.EXIT_ON_CLOSE); 第第10章章 圖形界面圖形界面 744.8、多監(jiān)聽器、多監(jiān)聽器在同一個(gè)組件上注冊(cè)多個(gè)監(jiān)聽器。在同一個(gè)組件上注冊(cè)多個(gè)監(jiān)聽器。根據(jù)需要多次調(diào)用根據(jù)需要多次調(diào)用addXXXListener() 方法注冊(cè)多個(gè)方法注冊(cè)多個(gè)監(jiān)聽器。監(jiān)聽器。第第10章章 圖形界面圖形界面 75帶有兩個(gè)監(jiān)聽器的帶有兩個(gè)監(jiān)聽器的Framepublic class TwoListener implements MouseMotionListener, MouseListenerFrame f;TextField tf;public static void ma
60、in(String args)TwoListener two = new TwoListener( );two.go();第第10章章 圖形界面圖形界面 76public void go()f=new Frame(“Two Listener”);tf=new TextField(30);f.add(tf,”BorderLayout.SOUTH”);f.addMouseMotionListener(this);f.addMouseListener(this);/ These are MouseMotionListener eventspublic void mouseDragged(MouseEvent e)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 成都商鋪?zhàn)赓U合同范本:包含租賃合同變更及解除
- 車輛抵押貸款及產(chǎn)權(quán)轉(zhuǎn)讓全程服務(wù)合同范本
- 線上線下活動(dòng)策劃合作委托合同
- 產(chǎn)科護(hù)理教學(xué)工作匯報(bào)
- 監(jiān)理專用表格匯編(承包商專用)
- 豐富興趣小組活動(dòng)方案
- 單位小區(qū)電梯管理制度
- 值班值守平臺(tái)管理制度
- 口腔護(hù)士宿舍管理制度
- 學(xué)校費(fèi)用收取管理制度
- 河北省邯鄲市(2024年-2025年小學(xué)四年級(jí)語(yǔ)文)部編版小升初模擬((上下)學(xué)期)試卷及答案
- 四川省大邑中學(xué)2024-2025學(xué)年高一新生上學(xué)期入學(xué)分班質(zhì)量檢測(cè)數(shù)學(xué)試題
- DL∕T 5551-2018 架空輸電線路荷載規(guī)范
- JGJ202-2010 建筑施工工具式腳手架安全技術(shù)規(guī)范【清晰版】
- 高考語(yǔ)文各類題型及答題技巧
- 六、煤礦提升機(jī)操作作業(yè)人員題庫(kù) 答案(二)
- 數(shù)據(jù)化轉(zhuǎn)型對(duì)營(yíng)銷職業(yè)的影響
- DL-T+617-2019氣體絕緣金屬封閉開關(guān)設(shè)備技術(shù)條件
- 全國(guó)交通運(yùn)輸行政執(zhí)法綜合管理信息系統(tǒng)考試題庫(kù)-中(多選題練習(xí))
- 甘肅省蘭州市城七里河區(qū)-2023-2024學(xué)年六年級(jí)下學(xué)期小學(xué)期末畢業(yè)測(cè)試語(yǔ)文試卷
- 全新裝修合同電子版范本
評(píng)論
0/150
提交評(píng)論