高级用户界面GUI设计.ppt
1,第12章高级用户界面GUI设计,2,12.1 布局管理器,各种组件都是被简单地放置到容器中,而无法设计和控制这些组件在容器中的位置,为了合理安排组件,我们使用了布局管理器。java.awt包中定义了5种布局类:FlowLayout、BorderLayout、CardLayout、GridLayout和GridBagLayout。javax.swing包中定义了4种布局类:BoxLayout、ScrollPanelLayout、ViewportLayout和OverLayout。,3,12.1.2 BorderLayout布局,BorderLayout布局将容器内空间划分为东、西、南、北、中5个区域,分别用英文EAST、WEST、SOUTH、NORTH、CENTER表示。加入每个组件都要指明它放在容器的哪个区域。如果某个区域没有分配组件,则其他组件可以占据它的空间。窗口默认的布局就是BorderLayout布局,用法如下:(P187)Container c=getContentPane();c.setLayout(new BorderLayout();/因默认,可省c.add(按钮对象,BorderLayout.SOUTH);/南方,4,12.1.3 FlowLayout布局,FlowLayout布局将组件按加入的先后顺序从左向右排列,一行排满之后转到下一行。(似word)用法:(P187)FlowLayout layout=new FlowLayout(FlowLayout.RIGHT);/右对齐c.setLayout(layout);,5,12.1.4 CardLayout布局,CardLayout布局将每个组件看成一张卡片,而屏幕上每次都只有一个组件在最上面,这个组件占据整个容器的空间。(P188),6,12.1.5 GridLayout布局,GridLayout类允许用户使用指定的“行列数”将窗口分割为彼此大小相等的区域,在每个区域放置一个组件。(P189),7,12.2.1 键盘事件处理,在Java中,当用户使用键盘进行操作时,会产生KeyEvent事件。监听者要完成对事件的响应,就要实现KeyListener接口,或继承KeyAdapter类,实现对类中方法的定义。KeyListener接口中定义的方法:void keyTyped(KeyEvent e):键被敲击事件;void keyPressed(KeyEvent e):键被按下去事件;void keyReleased(KeyEvent e):键被释放事件;,8,12.2.1 键盘事件处理,KeyEvent对象中的方法:int getKeyCode():返回按键的ASCII码;String getKeyTest(int code):返回按键对应的字符串;char getKeyChar():返回按键对应的字符;,9,12.2.2 鼠标事件处理,在Java中,当用户使用鼠标进行操作时,会产生鼠标事件MouseEvent。对MouseEvent事件的响应是实现MouseListener接口或MouseMotionListener接口,或继承MouseAdapter和MouseMotionAdapter类,并实现相应的方法。MouseListener接口提供了5种方法,主要针对鼠标的按下、进入和离开进行检测。MouseMotionListener接口提供了2种方法,主要针对鼠标的移动和拖动进行检测。,10,12.2.2 鼠标事件处理,MouseListener接口中的方法:void mouseClicked(MouseEvent e):鼠标单击;void mousePressed(MouseEvent e):鼠标按下;void mouseReleased(MouseEvent e):鼠标释放;void mouseEntered(MouseEvent e):鼠标进入;void mouseExited(MouseEvent e):鼠标离开;MouseMotionListener接口中的方法:1.void mouseDragged(MouseEvent e):鼠标拖动;2.void mouseMoved(MouseEvent e):鼠标移动;,11,12.3 菜单设计,在Java中,一般菜单格式包含有菜单栏(JMenuBar类)、菜单(JMenu类)和菜单项(JMenuItem类)组成。原则:将菜单(JMenu)对象加入到菜单栏(JMenuBar)对象中;最底层的一级菜单应为菜单项(JMenuItem)对象;二级菜单实现:JMenu对象.add(二级JMenu对象),12,12.4 对话框设计,JOptionPane类(P200)Dialog类(P206),13,12.5 容器,JPanel容器(P208)JScrollPane容器(P209),