《图形用户界面 》PPT课件.ppt
第十一章,图形用户界面(GUI)设计,学习目标:,GUI相关概念布局管理器的概念和使用方法事件处理的方法和过程常用Swing组件的使用,11.1 图形用户界面概述,(1)java.awt包AWT组件重组件,Button(按钮)、TextField(文本框),(2)javax.swing包Swing组件轻组件,JButton(按钮)、JTextField(文本框),观感,Windows观感,Java观感,Motif观感,11.1 图形用户界面概述,2、组件、容器、布局和观感,(1)组件:可图形化的方式显示在屏幕上,能够与用户交互。(2)容器:一种特殊的组件,能容纳其他组件或容器。顶层容器:JFrame、JApplet、JWindow、JDialog 中间层容器:JPanel、JScrollPane、JTabbedPane 添加组件:add()删除组件:remove(),(3)布局:专门管理组件在容器中的布局的工具布局管理器(4)观感:决定swing应用程序的外观。默认Java观感(又称为Metal观感),11.1 图形用户界面概述,11.2 布局管理器,Java中的布局类型包括以下几种:FlowLayout(流式布局)BorderLayout(边界布局)CardLayout(卡片布局)GridLayout(网格布局)GridBagLayout(网格包布局),一种最简单的布局。组件一个接一个从左到右、从上到下一排一排依次放在容器中。默认的每一行的组件都居中对齐,水平和垂直间隙是5个像素。FlowLayout是Panel、Jpanel、Applet的默认布局管理器构造方法:FlowLayout();FlowLayout(int align);FlowLayout(int align,int hgap,int vgap);,12.2.2 FlowLayout布局,import java.awt.*;import javax.swing.*;public class FlowLayoutDemo extends JFramepublic FlowLayoutDemo()super(FlowLayout布局);Container c=getContentPane();FlowLayout f=new FlowLayout(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);,又叫边界布局管理器。将容器分为东(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)五个区。按照“上北下南,左西右东”的规则分配Window、Dialog、Frame的默认布局;JFrame、JApplet、JDialog的内容窗格的默认布局构造方法:BorderLayout()BorderLayout(int hgap,int vgap),11.2.3 BorderLayout布局,将布局分为若干个大小相等的网格。当容器尺寸改变时,组件大小改变,但相对位置不变构造方法:GridLayout()GridLayout(int rows,int cols)GridLayout(int rows,int cols,int hgap,int vgap),11.2.4 GridLayout布局,11.2.5 CardLayout,类似于卡片的布局设置,CardLayout的主要方法:first(Container parent):翻转到容器的第一张卡片last(Container parent):翻转到容器的最后一张卡片next(Container parent):翻转到容器的下一张卡片previous(Container parent):翻转到容器的上一张卡片show(Containerparent,Stringname):翻转到已添加的指定name的组件,使用GridBagLayout实现如图所示布局效果,BoxLayout盒式布局的容器将组件排列在一行或一列,这取决于创建盒式布局对象时是否指定行排列还是列排列。构造方法:BoxLayout(Container target,int axis)X_AXIS Y_AXISBox类:createHorizontalBox()createVerticalBox()createHorizontalStruct(int width)createVerticalStruct(int height),11.2.7 Swing布局管理器,11.3.1 事件处理模式,Java 的事件处理模型:授权处理模型事件源:产生事件的组件,如JButton。事件对象:触发事件后系统会自动创建事件类的对象,XxxEvent。监听器:处理事件的实体,XxxListener。,授权处理模型,11.3.3 事件处理方法,(1)实现事件监听器接口法:定义类来实现这些接口,实现接口中所有的事件处理方法,用不到的写成空方法。e.getSource()返回事件源对象,class ButtonClick implements ActionListener public void actionPerformed(ActionEvent e)/具体处理事件的代码 if(e.getSource=button1).,例一:,例二:,例三:,例四:,总结:,图形用户界面基本知识布局管理器事件处理,11.4 常用Swing组件,常用容器组件JFrameJPanelJScrollPane、JSplitPane、JInternalFrameJButtonJTextField、JPasswordField、JTextAreaJCheckBoxJRadioButtonJListJComboBox,JFrame,1、简介:JFrame是带标题、边框、窗口状态调节按钮的顶层窗口。可以是构建Swing GUI应用程序的主窗口,也可以是附属于其他窗口的弹出窗口。每一个Swing GUI应用程序都至少应包含一个窗体默认布局为BorderLayout。,2、构造方法 JFrame()JFrame(String Title)3、常用方法:setVisible(true)setSize(长,宽)setResizable(boolean b)setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE),JFrame窗体,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=new JFrameDemo();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400,100);frame.setVisible(true);,举例1:JFrame的应用,JPanel,JPanel:一种中间容器,可以容纳组件,但他本身必须添加到其他容器中使用。为了能够更好的管理各组件,我们可以创建多个JPanel。创建一个面板,默认布局FlowLayout。new JPanel(),JScrollPane:把一个组件放入一个滚动窗格,有滚动条。new JScrollPane(component c)JSplitPane:被分成两部分的容器JInternalFrame:内部窗格,JScrollPane、JSplitPane、JInternalFrame,举例:ScrollDemo.java,JSplitPane,JTextField文本框,构造方法:JTextField(),JTextField(int columns),JTextField(String text),JTextField(String text,int columns)常用方法:String getText()void setText(String text)void setEditable(boolean b)void setHorizontalAlignment(int alignment),JPasswordField密码框,构造方法同JTextField常用方法:char getPassword()char getEchoChar()void setEchoChar(char c),JTextArea文本域(多行),构造方法JTextArea(),JTextArea(int rows,int cols),JTextArea(String text),JTextArea(String text,int rows,int cols)使用JScrollPane加滚动条常用方法:String getText()void setText(String text)void copy()void cut()void paste(),JButton按钮,构造方法可设置文本和图标常用方法:void setMnemonic(int c)设置键盘激活,JLabel标签,构造方法可设置文本、对齐方式和图标常用方法:String getText()void setText(String text),JCheckBox复选框,构造方法JCheckBox(Icon icon,boolean selected)JcheckBox(String text,boolean selected)JCheckBox(String text,Icon icon)JCheckBox(String text,Icon icon,boolean selected)常用方法:boolean isSelected(),JRadioButton单选按钮,构造创建组ButtonGroup group=new ButtonGroup();向组中添加项JRadioButton b1=new JRadioButton(“男”);JRadioButton b2=new JRadioButton(“女”);group.add(b1);group.add(bw);常用方法:boolean isSelected(),JComboBox下拉列表,下拉列表组件JComboBox构造 JComboBox()JComboBox(Object items)常用方法:void setSelectedIndex()object getSelectedItem(),11.5 高级组件,JSlider菜单JMenuBar、JMenu、JMenuItem、JPopupMenuJTableJTabbedPane对话框JOptionPane、JFileChooser,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);,11.5.2 菜单组件,3、JMenuIterm菜单项 一个菜单上可以有多个菜单项。,JMenuItem item1=new JMenuItem(“打开”);JMenuItem item2=new JMenuItem(“退出”);menu1.add(item1);menu1.addSeparator();menu1.add(item2);,11.5.3表格组件JTable,构造方法JTable(Object data,Object columnName)DefaultTableModel myData=new DefaultTableModel(Object data,Object column);JTable table=new JTable(myData);当组件需要更新显示时:table.epaint(),表内容,表头,表内容,表头,DefaultTableModel类:构造方法: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表格组件JTable,JTableDemo.java,JTabbedPane,本章小结,常用布局管理器的使用Java的事件处理机制Java的常用组件Java的高级组件,