JAVA图形用户界面设计与实现.ppt
《JAVA图形用户界面设计与实现.ppt》由会员分享,可在线阅读,更多相关《JAVA图形用户界面设计与实现.ppt(68页珍藏版)》请在三一办公上搜索。
1、图形用户界面的设计与实现,教材第7章,设计原则 容器与布局 标准组件 事件处理 自定义成分,用户界面设计原则,使用图形界面GUI(Graphics User Interface)字符界面采用命令行方式与用户交互。图形界面用多种媒体显示信息,用直观、方便的GUI标准组件来接收命令。控制权在用户(用户要由操作的主动权)界面与操作的风格一致性。宽容(容错)性。简洁与美观并重。,界面构成,容器,标准组件,用户自定义成分,创建GUI各组成成分,并安排相互 位置关系(包含,相邻,相交)。定义GUI各成分对不同事件的响应,实现与用户的交互与界面功能。,界面元素,容器是用来组织其他界面成分和元素的单元。可以形
2、成容器的层次,构筑复杂结构Window(Frame、Applet、Dialog)组件是图形用户界面的基本单位,它里面不再包含其他的成分。GUI组件是图形用户界面标准化的结果。GUI组件的作用是完成与用户的交互。用户自定义成分文字、图形、图象不能像标准组件一样被系统识别和承认,只起装饰作用。不能响应用户的动作,不具有交互功能。,AWT包,Abstract Windows Toolkit(抽象窗口工具)AWT类库中的各种操作是被定义为在一个并不存在的“抽象窗口”中进行的。抽取不同软硬件平台中所实现的窗口的公共特性。所设计的界面独立于具体的界面实现。提供与机器无关的基本GUI标准组件。选择类组件:单
3、选按钮、复选框、下拉选单、列表框文字处理类组件:标签、文本框、编辑框命令类组件:按钮、工具栏、菜单,AWT类层次关系图,Component,Container,Panel,Applet,Window,Frame,Dialog,Button,TextField,TextArea,TextComponent,Checkbox,MenuComponent,Menu,MenuItem,MenuBar,其他组件,独立,不独立,Component类,可显示在屏幕上的图形对象,可与用户交互。方法:add(PopupMenupopup)加一弹出菜单addFocusListener(FocusListenerl
4、)将发生在本组件上的事件注册给监听者,以进行事件处理。setSize(intwidth,intheight)设置组件尺寸paint(Graphicsg)重画组件setFont(Fontf)设置组件字体setBackground(Colorc)设置组件背景色setForeground(Colorc)设置组件前景色,paint和repaint 方法,某组件的paint()和 update()为系统自动调用的有关图形绘制的方法,不可人为编程调用;但可编程重新定义其操作内容。使用repaint()方法可以触发update()方法。,Font类,设计字体显示效果(创建字体对象)Font fn=new F
5、ont(String 字体,int 风格,int 字号);字体:TimesRoman,Courier,Arial等风格:三个常量Font.PLAIN,Font.BOLD,Font.ITALIC字号:字的大小(磅数)使用字体对象 如设置某组件当前使用的字体:setFont(Font fn)获取组件当前使用的字体:getFont(),Color类,构造函数1(设置颜色)Color c=new Color(intred,intgreen,intblue)范围:0255 new Color(200,200,200)new Color(255,0,100)构造函数2Color c=new Color(i
6、nt rgb)兰色:07 位 绿色:815位 红色:1623位 颜色常量值public static final Color black Color.black,Color.blue,Color.gray,Color.red Color.white,Containers 容器组件,Window 不需要其他组件支撑,独立显示。Frame Dialog 没有菜单条,不能改变大小Panel 必须放在Window组件中(或Web浏览器窗口)才能显示。它为一矩形区域,在其中可摆放其他组件,可以有自己的布局管理器。基本方法add(Component comp)将指定组件放到容器中add(Component
7、 comp,int index)remove(Componentcomp)删除指定组件setLayout(LayoutManagermgr)设置容器布局paint 画容器(及其上面的组件),容器的组件布局,依靠布局管理器(layout manager)方式调用容器的setLayout方法,为容器指定某种布局管理器的一个对象。例:setLayout(new FlowLayout()该布局管理器对象负责确定容器中组件的位置和大小。当容器需要定位组件和确定组件大小时,就会给布局管理器对象发消息,让它完成该项工作。直接管理组件方式调用容器的 setLayout(null)方法,关闭布局管理器。调用每一
8、个组件的setLocation()方法决定组件位置。调用每一个组件的setSize()方法决定其大小。直接管理组件将失去平台无关性。,布局管理器对象,布局管理器种类,FlowLayout:组件在一行中从左至右水平排列,排满后折行BorderLayout:北、南、东、西、中GridLayout:以行和列的网格形式安排组件GridBagLayout:更复杂、功能更强的网格布局CardLayout:每一个组件作为一个卡片,容器仅显示多个卡片中的某一个,确定容器布局,缺省的布局管理器Window、Frame、Dialog BorderLayoutPanel、Applet FlowLayout:选择布局
9、管理器的方法建立布局管理器类的对象利用容器的 setLayout 为容器指定布局(即指定一个布局管理器的对象)例:将myFrame布局设定为FlowLayout类型 myFrame.setLayout(new FlowLayout();,Frame,Frame(String title)构造一个新的不可见的frame隐含的布局管理器是:BorderLayoutsetLayout()设置新的布局管理器。add(Componentcomp)在容器上增加一个组件(在容器为不可见的状态时加)。void setSize(intwidth,intheight)setVisible(true),7-1a,F
10、rame Panel,Frame fm1=new Frame(Hello);fm1.setSize(400,350);fm1.setBackground(Color.gray);fm1.setLayout(null);Panel pn1=new Panel();pn1.setSize(100,100);pn1.setBackground(Color.red);pn1.setLocation(0,50);fm1.add(pn1);fm1.setVisible(true);,7-1b,FlowLayout布局管理器,构造函数:FlowLayout();FlowLayout(int align,in
11、t hgap,int vgap);align:对齐方式:LEFT CENTER RIGHThgap:组件水平间距(象素)vgap:组件垂直间距(象素)无参数的构造函数创建的FlowLayout对象,其对齐方式为CENTER居中方式,组件间的横纵间距都为5个像素。,FlowLayout布局管理器,Frame f=new Frame(FlowLayout);f.setSize(400,300);/不起作用 f.setBackground(Color.gray);f.setLayout(new FlowLayout(FlowLayout.LEFT,10,20);b1=new Button(butto
12、n1);b2=new Button(button2);b3=new Button(button3);f.add(b1);f.add(b2);f.add(b3);f.setVisible(true);f.pack();,7-1c,BorderLayout布局管理器,setLayout(new BorderLayout()add(b1,BorderLayout.NORTH);当容器大小改变,组件相对位置不会改变。,BorderLayout布局管理器,f=new Frame(BorderLayout);f.setSize(200,200);b1=new Button(button1);b5=new
13、Button(button5);f.add(b1,BorderLayout.NORTH);f.add(b2,BorderLayout.SOUTH);f.add(b3,BorderLayout.WEST);f.add(b4,BorderLayout.EAST);f.add(b5,BorderLayout.CENTER);f.setVisible(true);,7-1d,Border-Panel,class MyFrame extends Frame MyFrame()Button b1=new Button(1);Button b2=new Button(2);Button b3=new But
14、ton(3);Button b4=new Button(4);Panel p=new Panel();p.add(b1);p.add(b2);add(p,BorderLayout.NORTH);add(b3,BorderLayout.WEST);add(b4,BorderLayout.CENTER);pack();setVisible(true);,7-1e,GridLayout布局管理器,创建GridLayout对象作为布局编辑器,指定划分网格的行数和列数(网格大小一样)。setLayout(new GridLayout(行数,列数);setLayout(new GridLayout(行数,
15、列数,行间隔,列间隔);调用容器的方法add()将组件加入容器,组件填入容器的顺序将按照第一行第一个格中、第一行第二个格中、每个网格中都必须填入组件,如果希望某个网格为空白,可以为它加入一个空的标签:add(new Label();,GridLayout布局管理器,f=new Frame(GridLayout);f.setLayout(new GridLayout(2,3);f.setSize(200,100);f.setBackground(Color.gray);b1=new Button(1);b6=new Button(6);f.add(b1);f.setVisible(true);,
16、7-1f,布局例,Frame fm=new Frame()fm.setLayout(new FlowLayout();tf=new TextField(22);fm.add(tf);Panel p1=new Panel();p1.setLayout(new GridLayout(4,3);p1.add();Panel p2=new Panel();p2.setLayout(new GridLayout(4,3);p2.add();fm.add(p1);fm.add(p2);,7-2布局,GridBagLayout布局管理器,每个GridBagLayout对象维护一个动态矩形网格,每个组件可占据
17、一个或多个单元作为它的显示区域。每一个组件都与一个GridBagConstraints类的实例相连,以指定在显示区域中如何摆放,并可确定大小。步骤:setLayout(new GridBagLayout();GridBagConstraints gbc=new GridBagConstraints();gbc.gridx=0;(属性赋值)add(button1,gbc),GridBagLayout布局管理器,设置GridBagConstraints类实例属性值:gridx gridy 组件显示区域的左上角单元格坐标gridwidth gridheight 指定显示区域行、列单元数RELATIV
18、E 指定紧挨着前一个组件摆放fill 当显示区域大于组件时如何扩充组件:HORIZONTAL 水平充满 VERTICAL 垂直充满 BOTH 全部填充 NONE 不调整(隐含)ipadx ipady 指定组件间最小间隔 anchor 当显示区域大于组件时如何摆放组件:CENTER(隐含),NORTH,EAST,SOUTH,WEST,SOUTHEAST,NORTHEAST,SOUTHWEST,NORTHWEST.,CardLayout布局管理器,将每一个组件视为一张卡片,同一时刻只能显示一个组件。setLayout(new CardLayout()CardLayout方法(按序指定组件)firs
19、t(Containerparent)last(Containerparent)previous(Containerparent)next(Containerparent)CardLayout方法(按名显示组件)addLayoutComponent(Stringname,Componentc)show(Containerparent,Stringname),事件及处理机制,用户操作GUI组件时会引发各种事件。事件:描述“发生了什么事情”的对象。系统根据用户的操作构造出相应事件类的对象。事件源:事件的产生地。事件处理程序:是一个方法,它接收一个事件对象,分析它,并完成对该事件的处理。每个事件有一个
20、相应的监听者接口,它规定了能够接收(并处理)该类事件的方法的规范。监听者:实现了监听者接口的类,它包含有事件处理程序。编程人员要为事件源指定监听者对象(即指定处理某种事件的事件处理程序监听者对象方法)。,鼠标单击按扭,事件及处理机制,ActionEvent事件,public void actionPerformed(ActionEvent e),ActionListener接口,ActionEvent事件,监听者类,监听者对象,调用按扭的 addActionListener()方法,为该按扭指定监听者。,实现接口,事件类,ActionEvent类:存放这个事件的细节。该类的方法有:getSou
21、rce()返回事件发生的对象(名)getActionCommand()返回按扭名。ActionListener 接口public void actionPerformed(ActionEvent e),图形用户界面例,import java.awt.*;import java.awt.event.*;public class a public static void main(String args)MyFrame form1=new MyFrame();class MyFrame extends Frame MyFrame()super(窗口标题);setSize(200,100);setF
22、ont(new Font(TimesRoman,Font.BOLD,20);,图形用户界面例,setLayout(new FlowLayout();Button b=new Button(close);add(b);b.addActionListener(new Bprocess();setVisible(true);class Bprocess implements ActionListener public void actionPerformed(ActionEvent e)System.exit(0);,监听者类,某个类可以兼职也可以专职做这件事(实现监听者接口)。一个类若实现一个接口
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 图形 用户界面 设计 实现
链接地址:https://www.31ppt.com/p-6509687.html