好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

java第六章图形界面设计.ppt

43页
  • 卖家[上传人]:第***
  • 文档编号:49633377
  • 上传时间:2018-07-31
  • 文档格式:PPT
  • 文档大小:328.50KB
  • / 43 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • Java程序设计图形界面设计内容n创建图形界面nAWT事件模型nSwing常用组件6.1.1 图形用户界面概述nJava1.0的出现带来了抽象窗口工具箱 (AWT)设计目标是希望构建一个通用的 GUI,使得利用它编写的程序能够运行在所 有的平台上,以实现Sun公司提出的口号“ 一次编写,随处运行”n在Java1.2中,Sun公司推出了新的用户界 面库:Swing相对AWT来说,Swing功 能更强大、使用更方便,它的出现使得 Java的图形用户界面上了一个台阶6.1.2 GUI包njava.awt包n称为抽象窗口工具集AWT(Abstract Window Toolkit),是使用Java进行GUI设计的基础njavax.swing包nSwing组件存放在javax.swing包中几乎所有 AWT组件对应有新功能更强的Swing组件另外 还加入了一些全新的组件Swing组件在名称上 前面多了一个字母“J” 6.1.3 容器、组件和布局n容器和组件n组件是可以用图形化的方式显示在屏幕上并能 够与用户进行交互的对象n容器是一种特殊的组件,一种能够容纳其他组 件或容器的组件n布局管理器n为了使图形用户界面具有良好的平台无关性, 提供了专门用来管理组件在容器中的布局的工 具。

      6.1.4 Java的图形类结构ObjectComponentButtonLabelTextComponent CheckBoxContainerWindowPanelJComponentFrameDialogJFrameJDialogAppletJAppletJLabelJPanel6.1.5 JFramen用于在 Swing 程序中创建窗体n构造函数:nJFrame()nJFrame(String Title)n组件必须添加至内容窗格,而不是直接添 加至 JFrame 对象,示例:frame=new JFrame(); b=new JButton(“button”); frame.getContentPane().add(b);import javax.swing.*; public class HelloWorldSwing { private static void createAndShowGUI() { JFrame frame = new JFrame(“Hellow“);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JLabel label = new JLabel(“Hello World“);frame.getContentPane().add(label);frame.pack();frame.setVisible(true);}public static void main(String[] args) {createAndShowGUI();} }JFrame 示例 6.1.6 JLabeln它既可以显示文本也可以显示图像n构造函数:nJLabel(Icon icon):icon表示使用的图标nJLabel(String text,Icon icon,int align):text表示使 用的字符串; icon表示使用的图标;align表示水平对齐 方式,其值可以为:LEFT(默认)、RIGHT、CENTER 。

      n其它常用方法ngetText()nsetText(String text)6.1.7 JButtonn用于创建按钮n构造函数:nJButton() :nJButton(Icon icon)nJButton(String text)nJButton(String text, Icon icon)6.1.7 JTextFieldn此类的构造函数包括:nJTextField()nJTextField(int columns)nJTextField(String text)6.1.8 JPanelnJPanel 是一个中间容器n用于将小型的轻量级组件组合在一起nJPanel 的缺省布局为 FlowLayoutnJPanel 具有下列构造函数:nJPanel()nJPanel(LayoutManager lm)6.1.9 示例nSwingComps.java6.2 Java AWT事件处理机制n事件源:是一个事件的产生者n例如,在Button组件上点击鼠标会产生以这个 Button 为源的一个ActionEvent这个 ActionEvent实例是一个对象,它包含关于刚 才所发生的那个事件的信息。

      n事件侦听者:就是一个接收事件、解释事 件并处理用户交互的对象6.2.1 层次事件模型( JDK1.0)n事件先发送到组件,然后沿容器层次向上传播 没有被组件处理的事件会自动地继续传播到 组件的容器n特点:简单,但事件只能由产生这个事件的组 件或包含这个组件的容器处理,并且效率低6.2.2 委托事件模型( JDK1.1)n在这个模型中,事件被送往产生这个事件的组件 ,随后将事件转发给事件侦听者,事件侦听者在 能够接收事件之前必须先注册到事件源中而为 了侦听者能够接收事件,侦听者必须实现与事件 相对应的Listener接口n事件是只向注册的监听者报告的对象每个事件 都有一个对应的监听者接口,规定哪些方法必须 在该事件侦听者的类中定义实现此接口的类的 对象可以注册为一个该事件的监听者.委托事件模型n示例:ActionDemo.java6.2.3 方法类型和接口 CategoryInterface NameMethodsActionActionListeneractionPerformed(ActionEvent)ItemItemListeneritemStateChanged(ItemEvent) Mouse motionMouseMotionListe ner mouseDragged(MouseEvent) mouseMoved(MouseEvent) Mouse buttonMouseListener mousePressed(MouseEvent)mouseReleased(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) KeyFocusAdjustmentComponentKeyListenerFocusListenerAdjustmentListenerComponentListener keyPressed(KeyEvent) keyReleased(KeyEvent) keyTyped(KeyEvent) focusGained(FocusEvent) focusLost(FocusEvent)adjustmentValueChanged (AdjustmentEvent) componentMoved(ComponentEvent) componentHidden(ComponentEvent ) componentResized(ComponentEvent ) componentShown(ComponentEvent) WindowContainerTextWindowListenerContainerListenerTextListenerwindowClosing(WindowEvent)windowOpened(WindowEvent)windowIconified(WindowEvent)WindowDeiconified(WindowEvent)WindowClosed(WindowEvent)WindowActivated(WindowEvent)WindowDeactivated(WindowEvent)componentAdded(ContainerEvent)ComponentRemoved(ContainerEvent)TextValueChanged(TextEvent)6.2.4 事件Adapters(适配器)n一旦指定一个类实现了某个事件监听器接口,就 必须实现这个监听器接口的所有方法,否则你只 能将你的类定义为抽象类而无法定义这个类的实 例。

      从上面的例子我们可以看到,实现每个 Listener接口的所有方法的工作量均是非常大的 ,尤其是MouseListener接口和 ComponentListener接口n以MouseListener接口为例,它定义了如下方法 :n mouseClicked(MouseEvent)n mouseEntered(MouseEvent)n mouseExited(MouseEvent)n mousePressed(MouseEvent)n mouseReleased(MouseEvent)n为了方便起见,Java语言提供了Adapters类,用 来实现含有多个方法的类这些Adapters类中的 方法是空的你可以继承Adapters类,而且只需 重写你所需要的方法public class MouseClickHandler extends MouseAdapter{ // We just need the mouseClick handler, so we use // the Adapter to avoid having to write all the // event handler methodspublic void mouseClicked(MouseEvent e) { // Do something with the mouse click.} } 布局管理——Flow LayoutnFlow布局管理器用于对组件逐行地定位, 每完成一行,一个新行便又开始。

      与其他 布局管理器不一样的是,Flow布局管理器 不限制它所管理的组件的大小,允许它们 有自己的最佳大小n示例:FlowLayoutDemo.javaFlowLayout的构造方法npublic FlowLayout()npublic FlowLayout(int alignment)npublic FlowLayout(int alignment, int horizontalGap, int verticalGap)n参数alignment组件在容器中的对齐方式,可以 取值:nFlowLayout.LEFTnFlowLayout.CENTERnFlowLayout.Rightn参数horizontalGap, verticalGap分别表示组件 间的水平间距和垂直间距,缺省为5像素FlowLayout注意事项n当容器的宽度不能一行放置所有组件时, 组件将以多行的形式放置n当容器的宽度比一行组件宽时,缺省情况 下,组件将居中放置nFlowLayout是JPanel的缺省布局管理器布局管理——BorderLayoutnBorder布局管理器为在一个Panel或 Window中放置组件提供一个更复杂的方案 。

      Border布局管理器包括五个明显的区域 :东、南、西、北、中BorderLayout的构造函数n构造方法nBorderLayout( ) nBorderLayout(int horizontalGap, int verticalGap) n缺省情况下,BorderLayout的水平和垂直 间距为0BorderLayout示例n示例:BorderLayoutDemo.javaBorderLayout注意事项(1)n不要求东西南北中五个区域均放置组件, 若某个区域没有组件,该区域为0n若将多个组件放在同一区域,则该区域显 示最后一个放置的组件nBorderLayout是content pane的缺省布局 管理器BorderLayout注意事项(2)n区域的默认值为BorderLayout.CENTER, 以下两行语句均将按钮放置到中部npane.ad。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.