Java图形界面编程.ppt_第1页
Java图形界面编程.ppt_第2页
Java图形界面编程.ppt_第3页
Java图形界面编程.ppt_第4页
Java图形界面编程.ppt_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java图形界面编程 第四章 2 4 1本章任务 掌握Java图形界面设计的基本原理 理解java awt和javax swing软件包的类层次结构 掌握利用Java的GUI组件来创建按钮 标签 列表 面板等组件 掌握Java图形界面的事件模型 掌握利用Java布局管理器来对Java图形界面进行布局管理 3 4 2基础知识 4 基本的AWT组件 图形用户界面 GUI 可以通过键盘或鼠标来响应用户的操作 抽象窗口工具包 AWT 是一组Java类 此组Java类允许创建图形用户界面 GUI AWT提供用于创建生动而高效的GUI的各种组件 5 java awt包中的类体系结构 6 容器 可以存放组件的区域 可在容器上进行绘制和着色java awt包中的Container类可直接或间接派生出两个常用容器 框架 Frame类 和面板 Panel类 框架是一个带有边框的独立的窗口 面板是包含在窗口中的一个不带边框的区域 7 容器 框架 框架是独立于Applet和浏览器的一个窗口 可以通过以下任一构造函数来创建 Frame 创建一个不含标题的标准窗口Frame StringTitle 创建一个含有标题的窗口 这个标题是由参数title指定的 当一个Frame窗口被创建以后 需要调用setSize 方法来设置窗口的大小 并调用setVisible 来显示窗口 8 容器 面板 面板不是一个单独的窗口 它只是包含在窗口中的一个区域 面板是可以将许多组件组合起来的一种容器 最简单的创建面板的方式就是通过面板的构造函数Panel 来进行 必须将面板添加到窗体中 9 使用容器示例 importjava awt classPanelTestextendsPanel publicstaticvoidmain Stringargs PanelTestp newPanelTest Framef newFrame 正在测试面板 f add p f setSize 300 200 f setVisible true 使用GUI组件必须导入该包 将面板添加到框架窗体中 10 AWT组件 组件指可以放置在用户界面上的任何东西 可以将组件设置为可见或重新调整其大小 AWT支持的组件 标签 文本域 文本区 按钮 复选框 选择框等 高级组件包括滚动条 滚动窗格和对话框 向窗口加入一个组件 首先生成所需组件的实例 然后调用add 方法 此方法是在Container类中定义的 11 不同组件 标签 文本域 文本区 按钮 12 标签 可以通过以下任一构造函数来创建 Label 新建一个空标签Label Stringlabeltext 新建一个包含给定文本的标签Label Stringlabeltext intalignment 新建一个包含给定对齐方式的标签 对齐方式可以为Label LEFT Label RIGHT或Label CENTER 通常用来指明项目的用途标签不可以被用户编辑 13 文本域 可以通过以下任一构造函数来创建 TextField 新建一个文本域TextField intcolumns 新建一个包含给定列数的文本域TextField Strings 新建一个包含给定字符串的文本域TextField Strings intcolumns 新建一个包含给定字符串和列数的文本域 一种用来输入文本的GUI组件只能接受一行输入 14 标签和文本域使用示例 importjava awt classTextLabelDemoextendsFrame LabellblName newLabel 名称 TextFieldtxtName newTextField 20 publicTextLabelDemo Stringtitle super title setLayout newFlowLayout add lblName add txtName publicstaticvoidmain Stringargs TextLabelDemot newTextLabelDemo 正在测试组件 t setSize 300 200 t show 新建一个标签 新建一个文本域 添加到窗口 15 文本区 可以通过以下构造函数来创建 TextArea 新建一个TextAreaTextArea introws intcols 新建一个包含给定行数和列数的TextAreaTextArea Stringtext introws intcols 新建一个包含给定字符串 行数和列数的TextArea 要接受输入多行文本时使用可以包括滚动条 TextAreatxtComment newTextArea add txtComment 16 按钮 可以使用以下任一构造函数来创建按钮 Button 新建一个空的按钮Button Stringtext 新建一个包含给定字符串的按钮 按钮是任何GUI都不可或缺的组件用来捕捉用户操作的最为简便的方式 ButtonbtnOk newButton 确定 ButtonbtnCancel newButton 取消 add btnOk add btnCancel 17 复选框 可以使用以下任一构造函数来创建复选框 Checkbox 创建一个空的复选框 且未被选中 Checkbox Stringtext 创建一个用给定字符串作为标签的复选框 且未被选中 Checkbox Stringtext Booleanon 创建一个标签由参数text指定的复选框 允许通过参数on设定复选框的初始状态 用于多选项的用户输入 用户可以通过单击复选框来选定或取消选定某选项 18 单选按钮 可以通过复选框组生成一系列互斥的复选框 实现单选按钮功能 在一组单选按钮中只能选择一个按钮 首先创建一个CheckboxGroup对象 CheckboxGroupcg newCheckboxGroup 然后再创建各单选按钮 Checkboxmale Checkbox 男 cg true Checkboxfemale Checkbox 女 cg false 19 复选框和单选按钮使用示例 importjava awt classQualificationextendsFrame Checkboxt1 newCheckbox VisualBasic Checkboxt2 newCheckbox VisualC Checkboxt3 newCheckbox Java CheckboxGroupcg newCheckboxGroup Checkboxr1 newCheckbox 专科 cg false Checkboxr2 newCheckbox 本科 cg false Checkboxr3 newCheckbox 硕士 cg false Checkboxr4 newCheckbox 博士 cg false Labellb1 newLabel 您的学历为 Labellb2 newLabel 您精通的语言为 新建复选框 新建一个复选框组 添加单选按钮 publicQualification Strings super s setLayout newGridLayout 10 1 add lb1 add r1 add r2 add r3 add r4 add lb2 add t1 add t2 add t3 publicstaticvoidmain Stringargs Qualificationq newQualification 学识 q setSize 400 250 q show 将单选按钮添加到窗体 将复选框添加到窗体 20 选择框 用Choice类可以创建一个选择框Choicemoviestars newChoice 通过addItem 方法可以添加项目moviestars addItem 安东尼奥 班德拉斯 moviestars addItem 莱昂纳多 迪卡普尼奥 moviestars addItem 桑德 布洛克 moviestars addItem 休 葛兰特 moviestars addItem 朱莉亚 罗萡茨 用来向用户显示一个选择列表 21 Java布局管理器 用户界面上的组件可以按不同方式排列 Java使用布局管理器来管理这些排列方式 每当需要重新调整屏幕大小或重新绘制屏幕上任一项目时 就要用到布局管理器 AWT提供一组用来进行布局管理的类 称为布局管理器或布局 所有布局都实现LayoutManager接口 22 布局类型 Java中的布局类型包括以下几种 FlowLayout 流式布局 BorderLayout 边界布局 GridLayout 网格布局 GridBagLayout 网格包布局 CardLayout 卡片布局 23 布局类型的选用 每个布局管理器都有自己特定的用途 要按行和列显示几个同样大小的组件 GridLayout会比较合要在尽可能大的空间里显示一个组件 就要选择BorderLayout或GridBagLayout 24 如何设置布局 每个容器 Container对象 都有一个与它相关的缺省的布局管理器 Applet的缺省布局是FlowLayout在没有设置新的布局前 在容器中添加组件都按照该容器的缺省布局排列 可以通过setLayout 方法为容器设置新的布局 25 FlowLayout FlowLayout的构造函数有 FlowLayout 生成一个默认的流式布局FlowLayout intalignment 可以设定每一行组件的对齐方式FlowLayout intalignment inthorz intvert 可以设定组件间的水平和垂直距离 Applet和面板的缺省布局组件从左上角开始按从左到右 从上到下的方式排列 FlowLayoutmylayout newFlowLayout FlowLayoutexLayout newFlowLayout FlowLayout RIGHT setLayout exlayout 为容器设置新布局 26 BorderLayout2 1 下面是BorderLayout所定义的构造函数 BorderLayout 生成默认的边界布局 BorderLayout inthorz intvert 可以设定组件间的水平和垂直距离 窗口 框架和对话框等的缺省布局组件可被置于容器的北 南 东 西或中间位置 27 BorderLayout2 2 BorderLayout类定义了几个常量值以指定相应区域 BorderLayout NORTH 对应容器的顶部BorderLayout EAST 对应容器的右部BorderLayout SOUTH 对应容器的底部BorderLayout WEST 对应容器的左部BorderLayout CENTER 对应容器的中部加入组件方法 voidadd ComponentObj intregion setLayout newBorderLayout ButtonbtnEast newButton 东 ButtonbtnWest newButton 西 ButtonbtnNorth newButton 北 ButtonbtnSouth newButton 南 ButtonbtnCenter newButton 中 add btnEast BorderLayout EAST add btnWest BorderLayout WEST add btnNorth BorderLayout NORTH add btnSouth BorderLayout SOUTH add btnCenter BorderLayout CENTER 28 GridLayout GridLayout的构造函数如下所示 GridLayout 生成一个单列的网格布局 GridLayout introw intcol 生成一个设定行数和列数的网格布局 GridLayout introw intcol inthorz intvert 可以设置组件之间的水平和垂直间隔 用于将容器区域划分为一个矩形网格组件按行和列排列 Buttonbtn 声明按钮数组Stringstr 1 2 3 4 5 6 7 8 9 setLayout newGridLayout 3 3 btn newButton str length 创建按钮数组for inti 0 i str length i btn i newButton str i add btn i 29 GridBagLayout 通过使用以下语法容器可获得GridBagLayout GridBagLayoutgb newGridBagLayout ContainerName setLayout gb 要使用此布局 必须提供各组件的大小和布局等信息 GridBagConstraints类中包含GridBagLayout类用来定位及调整组件大小所需的全部信息 组件大小不必相同组件按行和列排列放置顺序不一定为从左至右和由上至下 30 GridBagConstraints类2 1 成员变量列表 gridx gridy 指定组件放置于哪个单元中gridwidth gridheight 指定组件将占用多少行和多少列weightx weighty 指定在一个GridBagLayout中应如何分配空间 这些变量的缺省值为0ipadx ipady 指定组件的最小高度和宽度 31 成员变量列表 fill 指定在单元大于组件的情况下 组件如何填充此单元 共有4可选值 缺省值为 GridBagConstraints NONEanchor 指定将组件放置在单元中的位置 共有9个可选值 缺省值为 GridBagConstraints CENTER GridBagConstraints类2 2 32 CardLayout 可存储几个不同的布局 每个布局就像是一个卡片组中的一张卡片 在一个给定的时间总会有一张卡片在顶层 卡片通常为一个Panel对象 每当需要许多面板切换 而每个面板需要显示为不同布局时 可以使用卡片布局 33 Java事件模型 Java最新的事件处理方法是基于授权事件模型事件源生成事件并将其发送至一个或多个监听器监听器简单地等待 直到它收到一个事件 一旦事件被接受 监听器将处理这些事件 然后返回 34 事件 在授权事件模型中 事件是一个描述事件源状态改变的对象 通过鼠标 键盘与GUI界面直接或间接交互都会生成事件 如 按下一个按钮 通过键盘输入一个字符 选择列表框中的一项 点击一下鼠标等 35 事件源 事件源是一个生成事件的对象一个事件源可能会生成不同类型的事件事件源提供了一组方法 用于为事件注册一个或多个监听器 每种事件的类型都有其自己的注册方法 一般形式为 publicvoidaddListener TypeListenere 36 AWT采取的事件控制过程 监听器对象属于一个类的实例 这个类实现了一个特殊的接口 名为 监听者接口 事件源是一个对象 它可以注册一个或多个监听器对象 并向其发送事件对象 事件源将在发生事件时向所有注册的监听器发送事件对象 监听器对象使用事件对象中的信息来确定它们对事件的响应 37 按钮单击事件示例 publicclassMyEventTestextendsPanel ButtonmyButton newButton 蓝色 创建面板或其他GUI组件MyListenermyAction newMyListener MyButton addActionListener myAction privateclassMyListenerimplementsActionListener publicMyListener 初始化 publicvoidactionPerformed ActionEventevent 需要为事件进行的操作 实现了ActionListener接口的监听器 实现了actionPerformed方法 以便根据参数ActionEvent对象的信息对事件做出响应 为按钮事件注册监听器 38 事件体系结构 39 AWT事件类型2 1 40 AWT事件类型2 2 41 监听器接口 监听器通过实现java awt event包中定义的一个或多个接口来创建 在发生事件时 事件源将调用监听器定义的相应方法 有兴趣接收事件的任何监听器类都必须实现监听器接口 42 监听器接口列表2 1 43 监听器接口列表2 2 44 适配器类 为了使事件处理变得简单 Java为具有多个方法的监听器接口提供适配器类 适配器类实现并提供了一个事件监听器接口中的所有的方法 但这些方法都是空方法 privateclassMyMouseAdapterextendsMouseAdapter privateColorbgColor publicMyMouseAdapter Colorc bgColor c publicvoidmouseClicked MouseEventmevent setBackground bgColor repaint 45 事件源 监听器和监听器接口 事件源描述事件对象中事件的性质 每个事件源都被映射至一个或多个事件监听器 发生事件时需要调用这些事件监听器 事件源随后通过将事件对象传递至监听器接口类的方法 将事件信息发送到监听器接口 监听器分析事件对象找出事件信息 以便给出响应 46 任何GUI对象的获得或失去焦点都被视为焦点事件 并且事件源必须向事件监听器通知事件对象已失去或已获得焦点 焦点监听器需要实现两个方法 focusGained和focusLost 要进行错误检查或数据校验时 对焦点的捕捉就显得尤其重要 焦点事件 47 焦点事件示例 publicvoidfocusLost FocusEventevent if event getComponent ccField 实现了当捕捉到失去焦点事件时如何响应 检验失去焦点的组件中的文本格式是否正确 如果格式不正确 将焦点移回到该组件 48 窗口事件 当一个窗口被激活 禁止 关闭 正在关闭 最小化 恢复 打开时将生成窗口事件 需要实现的方法如下 windowActivated windowClosedwindowClosing windowDeactivatedwindowDeiconified windowIconifiedwindowOpened 49 窗口事件示例 classMyFrameextendsFrame booleanw publicMyFrame w false setTitle 测试适配器类 setSize 300 200 MyPanelpanel newMyPanel add panel addWindowListener newMyWindowAdapter privateclassMyWindowAdapterextendsWindowAdapter publicvoidwindowClosing WindowEventwevent if w dispose elseSystem exit 0 实现了windowClosing方法 以响应窗口关闭时的事件 importjava awt importjava awt event publicclassMyAdapterDemo publicstaticvoidmain String args MyFramefrm newMyFrame frm show 50 在按下或释放键盘上的一个键时 将生成键盘事件 keyEvent类包含用来表示按下或点击的键的常量 生成keyEvent时将调用keyListener 如果程序需要处理特殊的键 如方向键 需要通过调用keyPressed 方法来处理 键盘事件 publicvoidkeypressed keyEventk intkeyCode k getKeyCode if keyCode k VK RIGHT k isShiftDown 检测用户是否按下了Shift 右箭头键 51 键盘事件示例 classMyPanelextendsPanel publicMyPanel TextFieldtField newTextField 20 add tField MyKeyAdapterbAction newMyKeyAdapter tField addKeyListener bAction privateclassMyKeyAdapterextendsKeyAdapter publicvoidkeyPressed KeyEventkevent setBackground Color blue repaint publicvoidkeyReleased KeyEventkevent setBackground Color red repaint publicvoidkeyTyped KeyEventkevent if kevent getKeyChar x System exit 0 按下键时背景变为兰色 释放键时背景变为红色 输入字符x时退出程序 52 鼠标事件 任何时候移动 单击 按下或释放鼠标 都会生成鼠标事件 鼠标事件有两种监听器 MouseListener和MouseMotionListener 需要实现的方法如下 mouseClicked mouseEntered mouseExitedmousePressed mouseReleasedmouseDragged mouseMoved 53 publicvoidmouseClicked MouseEventm intx m getX inty m getY intclickCount m getClickCount if clickCount 2 Graphicsg getGraphics g drawString 鼠标双击 x y g dispose 鼠标事件示例 获得点击鼠标时鼠标指针的x及y坐标 确定单击和双击 54 多个监听器 所有AWT事件源均支持监听器的多点传送模型 可以将同一事件发送到多个监听器对象 需要向一个事件源添加多个监听器 以便使所有注册的监听器都能够对事件源生成的事件作出响应 55 4 3案例4及案例分析 具体案例分析见本书 56 4 4扩展知识 57 Swing编程 Java1 2引入称为Swing的新的GUI组件库 Swing包括javax swing包及其子包 Swing有一个与平台无关的实现 而且具有一个艺术状态的属性集 尽管Swing独立于AWT 但它是依照基本的AWT类实现的 58 MVC设计模式 59 Swing结构 Object Component JFrame Container Window Frame Dialog JDialog JText JComboBox JLabel JList JMenuBar JOptionPane JPanel JScrollBar AbstractButton JToggleButton JMenuItem JButton JCheckBox JRadioButton JComponent JMenu 60 Swing组件 Swing组件独立于本地窗口系统 Swing组件除了AbstractButton类之外都以J开头 Swing组件是基于AWT构建 包含AWT可视化组件的替代组件 也包含复杂组件 树和表 J 61 Swing应用程序的容器层次 设计GUI时 都有用于放置可视化组件的主窗口 Container对象可用于将组件组合在一起 容器中的组件根据特定布局排列 Swing中的容器有两类 顶级容器 中间容器 62 顶级容器 JFrame 用于框架窗口的类 此窗口带有边框 标题 用于关闭和最小化窗口的图标等 带GUI的应用程序通常至少使用一个框架窗口 JDialog 用于对话框的类 JApplet 用于使用Swing组件的JavaApplet的类 63 中间容器 JPanel 最灵活 最常用的中间容器 JScrollPane 与JPanel类似 但还可在大的组件或可扩展组件周围提供滚动条 JTabbedPane 包含多个组件 但一次只显示一个组件 用户可在组件之间方便地切换 JToolBar 按行或列排列一组组件 通常是按钮 64 SwingGUI框架 你好 世界 菜单栏 顶级容器 GUI组件 GUI组件 内容窗格 65 基本的Swing应用程序 importjavax swing publicclassHelloSwing publicstaticvoidmain String args JFrameframe newJFrame HelloSwing JLabellabel newJLabel 你好 Swing frame getContentPane add label frame setDefaultCloseOperation JFrame EXIT ON CLOSE frame setSize 300 200 frame setVisible true 导入必要的包 一般还需导入 importjava awt importjava awt event 设置一个顶级容器 创建一个Swing组件 将组件添加到容器内容窗格 实现了在单击 关闭 按钮时 可以关闭窗口 如果使用的早期版本的平台 则需要通过事件监听器实现 66 JFrame 是放置其他Swing组件的顶级容器JFrame组件用于在Swing程序中创建窗体它的构造函数 JFrame JFrame StringTitle 组件必须添加至内容窗格 而不是直接添加至JFrame对象 示例 frame getContentPane add b 67 JPanel JPanel组件是一个中间容器用于将小型的轻量级组件组合在一起JPanel的缺省布局为FlowLayoutJPanel具有下列构造函数 JPanel JPanel LayoutManagerlm 68 JButton Swing的按钮相对于AWT中Button类提供了更多的功能 JButton类允许用图标 字符串或两者同时构造一个按钮 构造函数如下 JButton JButton Iconicon icon表示使用的图标JButton Stringtext text表示使用的字符串JButton Stringtext Iconicon ImageIconbuttonIcon1 newImageIcon on gif JButtonb1 newJButton FirstButton buttonIcon1 b1 setMnemonic KeyEvent VK F 设置键盘快捷方式 创建一个带图标的JButton 69 JPanel和JButton使用示例 importjava awt importjavax swing classPanelDemoextendsJFrame publicPanelDemo Stringtitle super title Containerc getContentPane JPanelcpane newJPanel JButtonok newJButton 确定 cpane add ok JButtoncancel newJButton 取消 cpane add cancel c add cpane BorderLayout SOUTH publicstaticvoidmain Stringargs PanelDemopd newPanelDemo JPanel测试 pd setSize 300 200 pd setVisible true 70 JLabel 它既可以显示文本也可以显示图像构造函数如下 JLabel Iconicon icon表示使用的图标JLabel Stringtext Iconicon intalign text表示使用的字符串 icon表示使用的图标 align表示水平对齐方式 其值可以为 LEFT RIGHT CENTER ImageIconicon newImageIcon Calv gif JLabelcalv label newJLabel 这是Calvin icon SwingConstants LEFT 71 文本组件 JtextComponent为所有Swing文本组件的根类 72 JTextField JTextField组件允许输入或编辑单行文本此类的构造函数包括 JTextField JTextField Documentdoc Stringtext intcolumns JTextField intcolumns JTextField Stringtext JTextField Stringtext intcolumns Containercon getContentPane con setLayout newFlowLayout JLabeljl newJLabel 文本域 con add jl JTextFieldtf newJTextField 20 con add tf 73 JTextArea JTextArea组件用于接受来自用户的多行文本它可实现可滚动界面JTextArea组件可使用下列构造函数创建 JTextArea JTextArea introws intcols JTextArea Stringtext JTextArea Stringtext introws intcols JTextArea Documentdoc JTextArea Documentdoc Stringtext introws intcols JLabeljl newJLabel 文本区 con add jl JTextAreata newJTextArea 5 10 con add ta 74 选择性输入 为了简化表单填写过程 通常为用户提供多种可供选择的选项 而无需用户写出他们的响应 常用于选择性输入的组件有 复选框单选按钮列表框组合框 75 复选框 复选框用于为用户提供一组选项JCheckBox类具有下列构造函数 JCheckBox JCheckBox Iconicon JCheckBox Iconicon booleanselected JCheckBox Stringtext JCheckBox Stringtext booleanselected JCheckBox Stringtext Iconicon JCheckBox Stringtext Iconicon booleanselected 76 单选按钮 单选按钮允许用户从多个选项中选择其中一个ButtonGroup用于在Swing中创建组JRadioButton对象可使用下列构造函数创建 JRadioButton JRadioButton Iconicon JRadioButton Icon booleanselected JRadioButton Stringtext JRadioButton Stringtext booleanselected JRadioButton Stringtext Iconicon JRadioButton Stringtext Iconicon booleanselected 77 JCheckBox和JRadioButton使用示例 importjava awt importjavax swing classHobbyextendsJPanel JCheckBoxc1 newJCheckBox 阅读 false JCheckBoxc2 newJCheckBox 音乐 false JCheckBoxc3 newJCheckBox 绘画 false JRadioButtonrad1 newJRadioButton 大专 JRadioButtonrad2 newJRadioButton 本科 JRadioButtonrad3 newJRadioButton 硕士 JLabeljl newJLabel 您有什么爱好 JLabelj2 newJLabel 您的最高学历 JButtonexitbtn newJButton 退出 publicHobby setLayout newGridLayout 9 1 add jl add c1 add c2 add c3 add j2 add rad1 add rad2 add rad3 add exitbtn publicclassHobbytestextendsJFrame Hobbytest super getContentPane add newHobby setSize 300 200 setVisible true publicstaticvoidmain Stringargs newHobbytest 78 列表 在可供选择的选项很多时 可向用户呈现一个列表来供他们选择JList组件依次排列项目列表 这些项目可以单选或多选JList类既可显示字符串 也可显示图标JList不支持双击MouseListener可用于解决双击问题 79 JList构造函数 publicJList 使用空模型构造JListpublicJList ListModeldataModel 构造一个列表 用它显示指定模型中的元素 publicJList Object listData 构造一个列表以显示指定数组listData的元素 JList不支持滚动 要启用滚动 可使用下列代码 JScrollPanemyScrollPane newJScrollPane myScrollPane getViewport setView dataList Stringstars 安东尼奥 班德拉斯 来昂纳多 迪卡普尼奥 桑德拉 布洛克 休 格兰特 朱莉亚 罗伯茨 JListmoviestars newJList stars 80 组合框 文本域和下拉列表的组合在Swing中 组合框由JComboBox表示构造函数如下 publicJComboBox 此构造函数使用缺省数据模型创建JComboBoxpublicJComboBox ComboBoxModelasModel 使用现有ComboBoxModel中的项目的组合框publicJComboBox Object items 包含指定数组元素的组合框 Stringnames 弗雷德里克 福西斯 约翰 克里沙姆 玛丽 希金斯 克拉克 帕特丽夏 康威尔 JComboBoxauthors newJComboBox names 81 菜单显示项目列表 指明各种任务 选择或单击某个选项时会打开另一个列表或子菜单 Swing菜单由菜单栏 菜单和菜单项构成 菜单栏是所有菜单和菜单项的根 菜单 82 JFC菜单组件 83 JMenuBar JMenuBar是可通过JFrame JWindow或JInternalFrame的根窗格添加至容器的组件 由多个JMenu组成 每个JMenu在JMenubar中都表示为字符串 JMenuBar需要两个附加类 SingleSelectionModel类 跟踪当前选定的菜单LookAndFeel类 负责绘制菜单栏以及对在其中发生的事件作出响应 84 JMenu JMenu在JMenuBar下以文本字符串形式显示 而在用户单击它时 则以弹出式菜单显示 JMenu具有两个附加类 JPopupMenu 用于显示JMenu的菜单项LookAndFeel 负责绘制菜单栏中的菜单以及对在其中发生的所有事件作出响应 85 JPopupMenu的函数 86 JMenuItem JMenu或JPopupMenu中的一个组件 以文本字符串形式显示 可以具有图标JMenuItem的外观可以修改 如字体 颜色 背景 边框等除字符串外 在JMenuItem中还可以添加图标 87 JCheckBoxMenuItem 将复选框作为其项目复选框是使用JCheckBox类创建的可有文本字符串和 或 图标在单击并释放JCheckBoxMenuItem时 菜单项的状态会变为选定或取消选定 88 JRadioButtonMenuItem 除了在任何时间点都只能选择一个单选按钮外 其他的与复选框类似可有文本字符串和 或 图标单击选定的单选按钮不会改变其状态单击未选定的单选按钮时将取消选定此前选定的单选按钮 89 菜单使用示例 importjavax swing importjava awt publicclassMenutestextendsJApplet publicvoidinit JMenuBarmb newJMenuBar JMenufileMenu newJMenu 显示 JMenupullRightMenu newJMenu 问好 fileMenu add 欢迎 fileMenu addSeparator fileMenu add pullRightMenu fileMenu add 退出 pullRightMenu add newJCheckBoxMenuItem 早上好 pullRightMenu add newJCheckBoxMenuItem 下午好 pullRightMenu add newJCheckBoxMenuItem 晚安 再见 mb add fileMenu setJMenuBar mb 90 Applet编程 Applet是一种为通过Web浏览器在Internet上工作而设计的Java程序 Applet是用Java编写的小应用程序 它能够嵌入在HTML网页中 并由支持Java的Web浏览器来解释执行 91 JavaApplet工作原理 HTML文件嵌入Applet www服务器 www服务器 www浏览器 请求HTML文件 下载HTML文件 请求Applet字节码 下载Applet字节码 解释执行Applet字节码 92 从Web上下载的javaApplet是在称为沙箱 sandbox 的安全环境中运行的 大多数浏览器上 在沙箱中运行时 Applet绝不能运行任何一个本地可执行程序 Applet除了可以与从中下载它们的服务器进行通信外 不能与任何主机通信 Applet不能读写本地计算机的文件系统 Applet不能查找除版本号等以外的任何关于本地计算机的信息 Applet的安全性 Applet是设计用于从远程站点加载 然后在本地执行 因此 安全对于Applet是至关重要的问题 93 JavaApplet程序的基本结构 94 第一个Applet程序 importjava awt importjava applet publicclassFirstappletextendsApplet Strings publicvoidinit s 你好 世界 publicvoidpaint Graphicsg g drawString s 70 80 覆盖了Applet类的init 方法 该方法主要用于初始化Applet中的变量 覆盖了Applet类的paint 方法 用于在屏幕上给定的位置绘制字符串 95 Applet源文件首先用Java编译器编译 javacFirstapplet java创建一个用于显示Applet的HTML文件 然后在命令提示符处键入下列代码 appletviewerFirstapplet html 编译和运行Applet 96 要在支持Java的浏览器中查看Applet 则需要加载HTML文件 Applet会显示为HTML网页的一部分 要运行Applet 浏览器必须启用Java插件 在浏览器中查看Applet 97 Applet和应用程序之间的区别 98 将应用程序转换为Applet 可以将一个图形化的Java应用程序转换成一个Applet 步骤如下 1 取消应用程序中的main方法 2 用Applet或JApplet替换Frame或JFrame 并将此类设为public 否则这个Applet不能被下载 3 去掉应用程序中对窗体的setSize方法和set

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论