《《圖形用戶界面 》PPT課件》由會員分享,可在線閱讀,更多相關(guān)《《圖形用戶界面 》PPT課件(44頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第十一章圖形用戶界面(GUI)設(shè)計 2 學(xué)習(xí)目標(biāo): GUI相關(guān)概念 布局管理器的概念和使用方法 事件處理的方法和過程 常用Swing組件的使用 3 11.1 圖形用戶界面概述(1) java.awt包AWT組件重組件Button( 按 鈕 ) 、TextField( 文 本 框 )( 2) javax.swing包 Swing組 件 輕 組 件JButton( 按 鈕 ) 、JTextField( 文 本 框 )使 用 Swing組 件使 用 AWT組 件 4 觀 感 Windows觀 感Java觀 感 Motif觀 感 5 11.1 圖形用戶界面概述2、組件、容器、布局和觀感( 1) 組 件
2、 : 可 圖 形 化 的 方 式 顯 示 在 屏 幕 上 ,能 夠 與 用 戶 交 互 。( 2) 容 器 : 一 種 特 殊 的 組 件 , 能 容 納 其 他 組 件 或 容 器 。 頂 層 容 器 : JFrame、 JApplet、 JWindow、 JDialog 中 間 層 容 器 : JPanel、 JScrollPane、 JTabbedPane 添 加 組 件 : add() 刪 除 組 件 : remove() 6 (3)布局: 專門管理組件在容器中的布局的工具布局管理器(4)觀感: 決定swing應(yīng)用程序的外觀。默認(rèn)Java觀感(又稱為Metal觀感) 11.1 圖形用戶
3、界面概述 7 11.2 布局管理器 Java中的布局類型包括以下幾種:- FlowLayout(流式布局)- BorderLayout (邊界布局)- CardLayout(卡片布局) - GridLayout(網(wǎng)格布局) - GridBagLayout(網(wǎng)格包布局) 8 一 種 最 簡 單 的 布 局 。 組 件 一 個 接 一 個 從 左 到 右 、 從上 到 下 一 排 一 排 依 次 放 在 容 器 中 。 默 認(rèn) 的 每 一 行 的 組件 都 居 中 對 齊 , 水 平 和 垂 直 間 隙 是 5個 像 素 。 FlowLayout是 Panel、 Jpanel、 Applet的 默
4、 認(rèn) 布局 管 理 器構(gòu) 造 方 法 :FlowLayout();FlowLayout(int align);FlowLayout(int align,int hgap,int vgap);12.2.2 FlowLayout布局 9 import java.awt.*;import javax.swing.*;public class FlowLayoutDemo extends JFramepublic FlowLayoutDemo()super(FlowLayout布 局 );Container c=getContentPane();FlowLayout f=new FlowLayout(
5、FlowLayout.LEFT,10,10);c.setLayout(f);for(int i=1;i=10;i+)c.add(new JButton(按 鈕 +i);public static void main(String args)JFrame frame=new FlowLayoutDemo();frame.setSize(250,200);frame.setVisible(true); 10 又 叫 邊 界 布 局 管 理 器 。 將 容 器 分 為 東 (EAST)、 南(SOUTH)、 西 (WEST)、 北 (NORTH)、 中 (CENTER)五 個 區(qū) 。按 照 “ 上
6、北 下 南 , 左 西 右 東 ” 的 規(guī) 則 分 配Window、 Dialog、 Frame的 默 認(rèn) 布 局 ; JFrame、JApplet、 JDialog的 內(nèi) 容 窗 格 的 默 認(rèn) 布 局構(gòu) 造 方 法 :BorderLayout()BorderLayout(int hgap,int vgap)11.2.3 BorderLayout布局 11 將 布 局 分 為 若 干 個 大 小 相 等 的 網(wǎng) 格 。 當(dāng) 容 器 尺 寸 改變 時 , 組 件 大 小 改 變 , 但 相 對 位 置 不 變構(gòu) 造 方 法 :GridLayout()GridLayout(int rows,in
7、t cols)GridLayout(int rows,int cols,int hgap,int vgap)11.2.4 GridLayout布局 12 11.2.5 CardLayout類 似 于 卡 片 的 布 局 設(shè) 置CardLayout的主要方法:first(Container parent):翻轉(zhuǎn)到容器的第一張卡片last(Container parent):翻轉(zhuǎn)到容器的最后一張卡片next(Container parent):翻轉(zhuǎn)到容器的下一張卡片previous(Container parent):翻轉(zhuǎn)到容器的上一張卡片show(Container parent, String
8、 name): 翻轉(zhuǎn)到已添加的指定name的組件 13 使 用 GridBagLayout實 現(xiàn) 如 圖 所 示 布 局效 果11.2.6GridBagLayout 14 BoxLayout盒 式 布 局 的 容 器 將 組 件 排 列 在 一 行 或 一 列 , 這 取 決 于創(chuàng) 建 盒 式 布 局 對 象 時 是 否 指 定 行 排 列 還 是 列 排 列 。構(gòu) 造 方 法 :BoxLayout(Container target,int axis) X_AXIS Y_AXISBox類 :createHorizontalBox()createVerticalBox()createHorizo
9、ntalStruct(int width)createVerticalStruct(int height)11.2.7 Swing布局管理器 15 11.3.1 事件處理模式Java 的事件處理模型:授權(quán)處理模型 事件源:產(chǎn)生事件的組件,如JButton。 事件對象:觸發(fā)事件后系統(tǒng)會自動創(chuàng)建事件類的對象,XxxEvent。 監(jiān)聽器:處理事件的實體,XxxListener。 16 授權(quán)處理模型 17 11.3.3 事件處理方法 (1)實現(xiàn)事件監(jiān)聽器接口法: 定義類來實現(xiàn)這些接口,實現(xiàn)接口中所有的事件處理方法,用不到的寫成空方法。 e.getSource()返回事件源對象class ButtonC
10、lick implements ActionListener public void actionPerformed(ActionEvent e) /具 體 處 理 事 件 的 代 碼 if(e.getSource=button1). . . . . . 18 例一: 19 例二: 20 例 三 : 21 例 四 : 22 總 結(jié) :圖 形 用 戶 界 面 基 本 知 識布 局 管 理 器事 件 處 理 23 11.4 常 用 Swing組 件常 用 容 器 組 件JFrameJPanelJScrollPane、 JSplitPane、 JInternalFrameJButtonJTextFi
11、eld、 JPasswordField、 JTextAreaJCheckBoxJRadioButtonJListJComboBox 24 JFrame1、簡介: JFrame是帶標(biāo)題、邊框、窗口狀態(tài)調(diào)節(jié)按鈕的頂層窗口。 可以是構(gòu)建Swing GUI應(yīng)用程序的主窗口,也可以是附屬于其他窗口的彈出窗口。 每一個Swing GUI應(yīng)用程序都至少應(yīng)包含一個窗體 默認(rèn)布局為BorderLayout。 25 2、 構(gòu) 造 方 法 JFrame( )JFrame(String Title)3、 常 用 方 法 :setVisible(true)setSize(長 ,寬 ) setResizable(bool
12、ean b)setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)JFrame窗體 26 import java.awt.*;import javax.swing.*;public class JFrameDemo extends JFramepublic JFrameDemo()super(myJFrame);Container c=getContentPane();JButton b1=new JButton(按 鈕 1);c.add(b1);public static void main(String args)JFrameDemo frame=ne
13、w JFrameDemo();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400,100);frame.setVisible(true); 舉例1:JFrame的應(yīng)用 27 JPanel JPanel:一種中間容器,可以容納組件,但他本身必須添加到其他容器中使用。 為了能夠更好的管理各組件,我們可以創(chuàng)建多個JPanel。 創(chuàng)建一個面板,默認(rèn)布局FlowLayout。- new JPanel( ) 28 把一個組件放入一個滾動窗格,有滾動條。 - new JScrollPane(component c )被
14、分成兩部分的容器內(nèi)部窗格JScrollPane、JSplitPane、JInternalFrame舉 例 : ScrollDemo.java推 薦 : Sun官 網(wǎng) 提 供 的 swing的 介 紹http:/ 29 JSplitPane 30 JTextField文本框 構(gòu)造方法: JTextField( ) , JTextField(int columns) ,JTextField(String text) ,JTextField(String text, int columns) 常用方法: String getText( ) void setText(String text) void
15、 setEditable(boolean b) void setHorizontalAlignment(int alignment) 31 JPasswordField密碼框 構(gòu)造方法同JTextField 常用方法: char getPassword( ) char getEchoChar( ) void setEchoChar(char c) 32 JTextArea文本域(多行) 構(gòu)造方法 JTextArea( ) ,JTextArea(int rows, int cols) ,JTextArea(String text) ,JTextArea(String text, int rows
16、, int cols) 使用JScrollPane加滾動條 常用方法: String getText( ) void setText(String text) void copy() void cut() void paste() 33 JButton按鈕 構(gòu)造方法 可設(shè)置文本和圖標(biāo) 常用方法: void setMnemonic(int c) 設(shè)置鍵盤激活 34 JLabel標(biāo)簽構(gòu)造方法 可設(shè)置文本、對齊方式和圖標(biāo) 常用方法: String getText( ) void setText(String text) 35 JCheckBox復(fù)選框構(gòu)造方法 JCheckBox(Icon icon
17、,boolean selected ) JcheckBox(String text , boolean selected ) JCheckBox(String text, Icon icon) JCheckBox(String text, Icon icon, boolean selected) 常用方法: boolean isSelected() 36 JRadioButton單選按鈕 構(gòu)造 創(chuàng)建組 ButtonGroup group=new ButtonGroup(); 向組中添加項 JRadioButton b1=new JRadioButton(“男”); JRadioButton b
18、2=new JRadioButton(“女”); group.add(b1); group.add(bw); 常用方法: boolean isSelected() 37 JComboBox下拉列表下拉列表組件JComboBox 構(gòu)造 JComboBox( ) JComboBox(Object items) 常用方法: void setSelectedIndex() object getSelectedItem() 38 11.5 高級組件 JSlider 菜單 JMenuBar、JMenu、JMenuItem、JPopupMenu JTable JTabbedPane 對話框 JOptionP
19、ane、JFileChooser 39 11.5.2 菜單1、JMenuBar菜單條 一個窗口只能有一個菜單條。JMenuBar menuBar=new JMenuBar();frame.setJMenuBar(menuBar);2、 JMenu菜 單 一 個 菜 單 條 上 可 以 有 多 個 菜 單 。JMenu menu1=new JMenu(“文 件 ”);JMenu menu2=new JMenu(“幫 助 ”);menuBar.add(menu1); menuBar.add(menu2); 40 11.5.2 菜單組件3、JMenuIterm菜單項 一個菜單上可以有多個菜單項。JM
20、enuItem item1=new JMenuItem(“打 開 ”);JMenuItem item2=new JMenuItem(“退 出 ”);menu1.add(item1);menu1.addSeparator();menu1.add(item2); 41 11.5.3表格組件JTable構(gòu)造方法 JTable(Object data ,Object columnName ) DefaultTableModel myData = new DefaultTableModel(Object data ,Object column ); JTable table = new JTable(m
21、yData); 當(dāng)組件需要更新顯示時:table.epaint() 表 內(nèi) 容 表 頭表 內(nèi) 容 表 頭 42 DefaultTableModel類: 構(gòu)造方法: DefaultTableModel(Object data, Object columnNames) DefaultTableModel(object columnNames,int rowCount) 主要方法: addRow(Object rowData) addColumn(Object columnName) setValueAt(Object aValue, int row,int col) getValueAt(int row,int col) 11.5.3表格組件JTableJTableDemo.java 43 JTabbedPane 44 本章小結(jié)常用布局管理器的使用Java的事件處理機制Java的常用組件Java的高級組件