Java程序设计基础与实践 第8章 图形界面常用组件应用.ppt_第1页
Java程序设计基础与实践 第8章 图形界面常用组件应用.ppt_第2页
Java程序设计基础与实践 第8章 图形界面常用组件应用.ppt_第3页
Java程序设计基础与实践 第8章 图形界面常用组件应用.ppt_第4页
Java程序设计基础与实践 第8章 图形界面常用组件应用.ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

1、第8章 图形界面常用组件应用,本章要点,Java事件处理机制 Java Swing常用组件及组件事件处理方法 JavaApplet程序图形界面的绘制方法,Java事件处理机制, Java事件处理流程 事件源 能够产生事件的对象都可以成为事件源,如按钮、文本框等。换句话说,事件源必须是一个对象,而且该对象必须是Java认为能够发生事件的对象。 监视器 监视器就是一个对事件源进行监视的对象,事件源通过调用相应的方法将某个对象作为自己的监视器。事件源是不处理事件的,而是将事件转交给监视器来处理。 处理事件的接口 监视器是一个对象,为了处理事件源发生的事件,它会自动调用它所属类中的方法来处理事件。Ja

2、va规定,为了让监视器对象能对事件源发生的事件进行处理,创建该监视器对象的类必须声明实现相应的接口,即必须在类体中给出该接口中所有方法的方法体,那么当事件源发生事件时,监视器对象就会自动调用类中已实现的接口方法来处理事件。,Java事件处理机制(续),javax.swing.event包中提供了许多事件类和处理各种事件的接口。对于按钮,事件最基本的处理过程如下: 引入事件包 import javax.swing.event.*; 定义实现事件监视器接口 class ActionHandler implements ActionListener 创建事件监视器 button.addActionL

3、istener(监视器); 实现接口中的方法 public void actionPerformed(ActinEvent e),Java事件处理机制(续), 适配器类 适配器类不需要实现接口中所有方法,只需要实现部分方法即可,它会将不需要实现的方法自动以空实现的方式实现。在Java类库中,Swing事件监视器接口有9个适配器类 。,Java事件处理机制(续), 常用事件监视器 接口名称: ActionListener、ItemListener、TextListener、AdjustmentListener、MouseMotionListener、MouseListener、KeyListen

4、er、FocusListener、ComponentListener、WindowListener、ContainerListener,Swing常用组件-标签组件,标签(JLabel)用来显示提示信息。标签可以显示文本和图标。 JLabel的常用属性 : CENTER 某区域的中心位置 TOP 用于指定框顶部位置的框方向常量 LEFT 用于指定框左侧位置的框方向常量 BOTTOM 用于指定框底部位置的框方向常量 RIGHT 用于指定框右侧位置的框方向常量,Swing常用组件-标签组件,JLabel的常用方法 : JLabel() 创建无图像并且其标题为空字符串的JLabel JLabel(I

5、conimage)创建具有指定图像的JLabel实例 JLabel(Iconimage, int Halignment)创建具有指定图像image和水平对齐方式的JLabel实例 JLabel(Stringtext)创建具有指定文本的JLabel实例 JLabel(Stringtext, Iconicon, int Halignment)创建具有指定文本、图像和水平对齐方式的JLabel实例 JLabel(Stringtext, intHalignment)创建具有指定文本和水平对齐方式的JLabel实例 setText(Strings)定义此组件将要显示的单行文本 getTextl()返回该

6、标签所显示的文本字符串,Swing常用组件-标签组件,setVerticalAlignment (intValignment)设置标签内容垂直方向的对齐方式,默认值为CENTER。 getHorizontalAlignment()返回标签内容水平方向的对齐方式。返回值为LEFT、CENTER、RIGHT、LEADING 或 TRAILINGsetHorizontalAlignment(intHalignment)设置标签内容水平方向的对齐方式。getVerticalTextPosition()返回标签的文本相对其图像的垂直对齐方式,返回值为TOP、CENTER 或 BOTTOM 其中参数Val

7、ignment选项为:TOP、CENTER或 BOTTOM;参数Halignment选项为:LEFT、CENTER(只显示图像的标签的默认值)、RIGHT、LEADING(只显示文本的标签的默认值)或 TRAILING。,Swing常用组件-按钮组件,按钮(JButton)是使用最为普遍的用户界面组件。按钮通常带有某种边框,且可以被鼠标或快捷键激活,能够完成某种功能。 JButton的常用属性从javax.swing.SwingConstants继承而来,与JLabel相同 JButton的常用方法 : JButton()建立一个按钮 JButton(Icon icon)建立一个有图像的按钮

8、JButton(String icon)建立一个有文字的按钮 JButton(String text,Icon icon)建立一个有图像与文字的按钮 addActionListener(ActionListener l)将一个ActionListener添加到按钮中 getActionCommand()返回此按钮的动作命令,Swing常用组件-按钮组件,getMnemonic()返回当前模型中的键盘助记符 getText()返回按钮的文本 setActionCommand(String actionCommand)设置此按钮的动作命令,actionCommand为按钮的动作命令 setEnab

9、led(boolean b)启用(或禁用)按钮,b为true表示启用按钮,否则为禁用 setHorizontalAlignment(int Halignment)设置图标和文本的水平对齐方式 setHorizontalTextPosition(int textPosition)设置文本相对于图标的横向位置 setText(String text)设置按钮的文本 setVerticalAlignment(int Valignment)设置图标和文本的垂直对齐方式,Swing常用组件-按钮组件,按钮上事件、事件监视器和接口: 按钮可发生ActionEvent事件 事件监视器接口为ActionLis

10、tener接口 该接口中的抽象方法为:public void actionPerformed(ActionEvent e),Swing常用组件-文本型组件, 文本框组件(JTextField) 文本框组件用来接受用户输入的单行文本信息。 JTextField的常用属性 : notifyAction发送通知(已接收字段内容)的动作名称。通常它必须绑定到回车操作 CENTER 某区域的中心位置 TOP 用于指定框顶部位置的框方向常量 LEFT 用于指定框左侧位置的框方向常量 BOTTOM 用于指定框底部位置的框方向常量 RIGHT 用于指定框右侧位置的框方向常量,Swing常用组件-文本型组件,J

11、TextField的常用方法 : JTextField() 构造一个新的文本框 JTextField(int columns) 构造一个具有指定列数的新的空 TextFieldJTextField(String s) 构造一个用指定文本初始化的新TextField JTextField(Strings,intcolumns) 构造一个用指定文本和列初始化的新TextField setText(String s) 设置文本框中的文本为参数s指定的文本 getText() 获取文本框中的文本 setEditable(boolean b) 设置文本框的可编辑性 addActionListener(A

12、ctionListener l) 添加指定的操作侦听器l以从此文本字段接收操作事件,Swing常用组件-文本型组件,removeActionListener(ActionListener l) 移除指定的操作侦听器,以便不再从此文本字段接收操作事件 getColumns() 返回此TextField中的列数 setColumns(intcolumns) 设置此TextField中的列数,然后验证布局 setFont(Fontf) 设置当前字体f。这将移除缓存的行高和列宽,以便新的字体能够反映出来,设置字体后将调用 revalidate 文本框上回车时发生的事件、接口及需要实现的方法和JButt

13、on相同。,Swing常用组件-文本型组件, 密码框组件(JPasswordField) 密码框组件是一个轻量级组件,允许编辑一个单行文本,但不显示原始字符,默认的回显字符为“*”。 JPasswordField的常用属性与JTextField相同 JPasswordField的常用方法 : JPasswordField() 构造一个新JPasswordField,使其具有默认文档、为null的开始文本字符串和为 0 的列宽度 JPasswordField(Stringtext) 构造一个利用指定文本初始化的新JPasswordField。将文档模型设置为默认值,列数为0 JPasswordF

14、ield(intcolumns) 构造一个具有指定列数的新的空JPasswordField。创建一个默认模型,并将其初始字符串设置为null JPasswordField(Stringtext, intcolumns) 构造一个利用指定文本和列初始化的新JPasswordField。将文档模型设置为默认值 getEchoChar() 返回要用于回显的字符。默认值为“*”。默认值根据当前运行的外观可以有所不同。如果未设置,则返回0,Swing常用组件-文本型组件,getPassword() 返回此TextComponent中所包含的文本。如果基础文档为null,则将给出NullPointerEx

15、ception。为了取得较高的安全性,建议将每个字符设置为0以便在使用后清除返回的字符数组 setEchoChar(charc) 建议设置此JPasswordField的回显字符。将值设置为0指示希望按照键入查看文本,类似于标准JTextField的行为。c是要显示的回显字符 其中表中参数text是要显示的文本,如果没有文本,则为null;参数columns代表列数,值大于等于0。 密码框组件回车时发生的事件、接口及需要实现的方法和JTextField相同。,Swing常用组件-文本型组件, 文本区组件(JTextArea) 文本区组件是一个显示纯文本的多行区域。 JTextArea的常用属性

16、 : BOTTOM_ALIGNMENT 指定组件底部对齐方式LEFT_ALIGNMENT 指定组件左对齐方式RIGHT_ALIGNMENT 指定组件右对齐方式TOP_ALIGNMENT 指定组件顶部对齐方式CENTER_ALIGNMENT 指定组件居中对齐方式,Swing常用组件-文本型组件,JTextArea的常用方法 : JTextArea() 构造新的文本区。设置默认的模型,初始字符串为 null,行/列设置为0 JTextArea(String text) 构造显示指定文本的新的文本区。创建默认模型,行/列设置为0 JTextArea(introws,intcolumns) 构造具有指

17、定行数和列数的新的空文本区。创建默认模型,初始字符串为null JTextArea(Stringtext,introws,intcolumns) 构造具有指定文本、行数和列数的新的文本区。创建默认模型 JTextArea(Documentdoc,Stringtext, introws, intcolumns) 构造具有指定行数和列数以及给定模型doc的新的JTextArea。所有构造方法均调用此构造方法 setText(String text) 将文本区中的文本设置为参数指定的文本 getText() 获取文本区中的文本 insert(String s,int x) 在指定位置x处,插入指定文

18、本s,Swing常用组件-文本型组件,replaceRange(String text,int start,int end) 用所给的新文本text替换从指定位置start开始到指定位置end结束的文本 append(String text) 将给定文本text追加到文档结尾 getColumns() 返回文本区中的列数大于等于0 getColumnWidth() 获取列的宽度,列的宽度大于等于1 getLineCount() 确定文本区中所包含的行数,其值大于0 getLineWrap() 获取文本区的换行策略。如果设置为true,则当行的长度大于所分配的宽度时,将换行。如果设置为false

19、,则始终不换行 getRows() 返回文本区中的行数大于0 setColumns(intcolumns) 设置此文本区中的列数。设置新值之后执行invalidate(),Swing常用组件-文本型组件,setFont(Fontf) 设置当前字体f。这将移除缓存的行高和列宽,以便新的字体能够反映出来,并且调用revalidate() setLineWrap(booleanwrap) 设置文本区的换行策略。如果wrap设置为true,则当行的长度大于所分配的宽度时,将换行。如果设置为false,则始终不换行、 setRows(introws) 设置此文本区的行数。设置新值之后调用invalida

20、te() setWrapStyleWord(booleanword) 设置换行方式(如果文本区要换行)。如果word设置为 true,则当行的长度大于所分配的宽度时,将在单词边界(空白)处换行。如果设置为false,则将在字符边界处换行。此属性默认为false 其中表中的参数text是要显示的文本,可以为null;参数rows和columns分别代表行数和列数,其值大于等于0。,Swing常用组件-文本型组件,文本区事件、事件监视器和接口: 文本区可发生DocumentEvent事件 事件监视器接口为DocumentListener接口 该接口中的抽象方法为: void changedUpda

21、te(DocumentEvente)给出属性或属性集发生了更改的通知 void insertUpdate(DocumentEvente)给出对文档执行了插入操作的通知 void removeUpdate(DocumentEvente)给出移除了一部分文档的通知,Swing常用组件-选择型组件, 单选按钮组件(JRadioButton) 单选按钮组件实现用户的单一选择,用户可以很方便地查看单选按钮的状态。JRadioButton类可以单独使用,也可以与ButtonGroup类联合使用,当单独使用时,可以被选定和取消选定,当与ButtonGroup类联合使用时,则组成了一个单选按钮组,此时用户只能

22、选定按钮组中的一个单选按钮,取消选定的操作将由ButtonGroup类自动完成。 JRadioButton的常用属性与JTextArea相同,Swing常用组件-选择型组件,JRadioButton的常用方法 : JRadioButton() 建立一个新的JRadioButtonJRadioButton(Icon icon)建立一个有图像但没有文字的JRadioButtonJRadioButton(Icon icon,boolean selected) 建立一个有图像但没有文字的JRadioButton,且设置其初始状态(有无被选取) JRadioButton(String text) 建立一

23、个有文字的JRadioButton JRadioButton(String text,boolean selected) 建立一个有文字的JRadioButton,且设置其初始状态(有无被选取) JRadioButton(String text,Icon icon) 建立一个有文字且有图像的JRadioButton,初始状态为无被选取 JRadioButton(String text,Icon icon,boolean selected) 建立一个有文字且有图像的JRadioButton,且设置其初始状态(有无被选取),Swing常用组件-选择型组件,getText() 获取单选按钮的名称 s

24、etText(String s) 将单选按钮的名称设置为指定的字符串s setSelected(booleanb) 设置单选按钮的状态isSelected()返回按钮的状态。如果选定了切换按钮,则返回true,否则返回false setHideActionText(booleanhideActionText) 设置hideActionText属性,该属性确定按钮是否显示Action的文本。只有在按钮上已安装了Action时,此方法才有用。参数hideActionText是指如果按钮的text属性不应该反映Action的文本,则该参数为true;默认情况下为false,Swing常用组件-选择型

25、组件,单选按钮上发生的事件: 单选按钮可发生ItemEvent事件 事件监视器接口为ItemListener接口 该接口中的抽象方法为:public void itemStateChanged(ItemEvent e) 其中,ItemEvent类提供以下两种方法: ItemSelectable getItemSelectable()/返回引发选择变化的事件源 int getStateChange() /返回改变的状态,Swing常用组件-选择型组件,ButtonGroup类用来创建一个按钮组,按钮组的作用是负责维护该组按钮的“开启”状态,在按钮组中只能有一个按钮处于“开启”状态。 Button

26、Group提供的常用方法 : add(AbstractButton b) 添加按钮到按钮组中 remove(AbstractButton b) 从按钮组中移除按钮 getButtonCount() 返回按钮组中包含按钮的个数,返回值为int型 getElements()返回一个Enumeration类型的对象,通过该对象可以遍历按钮组中包含的所有按钮对象,Swing常用组件-选择型组件, 选择框组件(JCheckBox) 选择框(也被称为复选框)提供两种状态,一种是选中,另一种是未选中,实现用户的多种选择。 JCheckBox的常用方法 : JCheckBox() 创建一个没有文本、没有图标并

27、且最初未被选定的复选框JCheckBox(Iconicon) 创建有一个图标、最初未被选定的复选框JCheckBox(Stringtext) 创建一个带文本的、最初未被选定的复选框JCheckBox(Actiona) 创建一个复选框,其属性从所提供的Action获取JCheckBox(Stringtext,booleanselected) 创建一个带文本的复选框,并指定其最初是否处于选定状态 JCheckBox(Stringtext,Iconicon) 创建带有指定文本和图标的、最初未选定的复选框 JCheckBox(Stringtext,Iconicon,booleanselected) 创

28、建一个带文本和图标的复选框,并指定其最初是否处于选定状态,Swing常用组件-选择型组件,addItemListener(ItemListener l) 向选择框增加监视ItemEvent事件的监视器l removeItemListener(ItemListener l) 移去选择框上的ItemEvent事件的监视器l getText() 获取选择框的名称 setText(String s) 将选择框的名称设置为指定的字符串s setSelected(booleanb) 设置选择框的状态 isBorderPaintedFlat() 获取borderPaintedFlat属性的值 setBord

29、erPaintedFlat(booleanb) 设置borderPaintedFlat属性,该属性为外观提供了关于复选框边框外观的提示。在JCheckBox实例用作组件(如JTable 或JTree)中的渲染器时,该属性通常被设置为true。borderPaintedFlat属性的默认值为false。此方法触发一个属性更改事件。一些外观也许不实现平面边框;它们将忽略此属性。参数b为true则请求将边框绘制为平面的;为false则请求为普通边框,Swing常用组件-选择型组件,其中表中参数icon是要显示的Icon图像;参数selected指示最初选择状态的boolean值,如果该参数为true

30、,则复选框被选定;参数text是复选框的文本。 选择框上发生的事件、接口及需要实现的方法和JRadioButton相同,Swing常用组件-选择型组件, 下拉列表框组件(JComboBox) 下拉列表框组件是将按钮或可编辑字段与下拉列表组合的组件。用户可以从下拉列表中选择值,下拉列表在用户请求时显示。如果使组合框处于可编辑状态,则组合框将包括用户可在其中键入值的可编辑字段。 JComboBox的常用属性 : dataModel 数据模型 Renderer 渲染器 Editor 编辑器 maximumRowCount 不使用滚动条可以显示的最大项数isEditable可编辑,Swing常用组件-

31、选择型组件,JComboBox的常用方法 : JComboBox() 创建具有默认数据模型的JComboBox。默认的数据模型为空对象列表。使用addItem添加项。默认情况下,选择数据模型中的第一项 JComboBox(ComboBoxModelaModel) 创建一个JComboBox,其项取自现有的ComboBoxModel。由于提供了ComboBoxModel,使用此构造方法创建的组合框不创建默认组合框模型,这可能影响插入、移除和添加方法的行为方式。参数aModel提供显示的项列表的ComboBoxModel JComboBox(Objectitems) 创建包含指定数组中的元素的JC

32、omboBox。默认情况下,选择数组中的第一项(因而也选择了该项的数据模型)。参数items是要插入到组合框的对象数组 removeActionListener(ActionListenerl) 移除ActionListener removeAllItems() 从选项列表中移除所有项 removeItem(ObjectanObject) 从选项列表中移除项 removeItemAt(intanIndex) 移除anIndex处的项,Swing常用组件-选择型组件,addItem(Object item)为选项列表添加项 insertItemAt(Object item,int index)在

33、选项列表中的给定索引处插入项 setSelectedItem(ObjectanObject)将组合框显示区域中所选项设置为参数中的对象 setMaximumRowCount(intcount)设置JComboBox显示的最大行数 setEditable(booleanaFlag)确定JComboBox字段是否可编辑 setSelectedIndex(intanIndex)选择索引anIndex处的项 setModel(ComboBoxModelaModel)设置JComboBox用于获取项列表的数据模型 下拉列表框上可以发生ActionEvent、ItemEvent等多个事件,但其主要使用的事

34、件是ActionEvent,其接口及实现方法和JRadioButton相同,Swing常用组件-选择型组件, 列表框组件(JList) 列表框组件实现一个列表框,列表框与选择框的主要区别就是列表框可以多选。 JList的常用属性 : BOTTOM_ALIGNMENT指定组件底部对齐方式 LEFT_ALIGNMENT指定组件左对齐方式 RIGHT_ALIGNMENT指定组件右对齐方式 TOP_ALIGNMENT指定组件顶部对齐方式 CENTER_ALIGNMENT指定组件居中对齐方式 HORIZONTAL_WRAP指示“报纸样式”布局,单元按先水平后垂直排列 VERTICAL指示单个列中单元的垂

35、直布局;默认布局 VERTICAL_WRAP指示“报纸样式”布局,单元按先垂直后水平排列,Swing常用组件-选择型组件,JList的常用方法 : JList() 构造一个使用空模型的JList JList(ListModeldataModel) 构造一个JList,使其使用指定的非null模型显示元素 setSelectedIndex(int index) 选中指定索引的一个选项 setSelectedIndices(int indices) 选中指定索引的一组选项 getSelectedIndices() 以int形式获得被选中的所有选项的索引值 getSelectedValues() 以

36、Object形式获得被选中的所有选项的内容 clearSelection() 取消所有被选中的项 isSelectionEmpty() 查看是否有被选中的项,如果有则返回true isSelectedIndex(int index) 查看指定项是否已经被选中,Swing常用组件-选择型组件,ensureIndexIsVisible(int index) 使指定项在选择窗口中可见 setVisibleRowCount(int visibleRowCount) 设置在选择窗口中最多可见选项的个数 setSelectionMode(int selectionMode) 设置列表框的选择模式,即单选还

37、是多选 setModel(ListModelmodel) 设置表示列表内容或列表“值”的模型,通知属性更改侦听器,然后清除列表选择 列表框上发生的事件: 单选按钮可发生ListSelectionEvent事件 事件监视器接口为ListSelectionListener接口 该接口中的抽象方法为:public void valueChanged(ListSelectionEvent event),菜单,菜单分为两类,一类是固定的,一类是弹出式菜单,菜单 - 固定的菜单,固定的菜单是图形界面中最常用的一种菜单形式。固定菜单一般包括菜单条、菜单组和菜单项。创建一个固定菜单要分成三步: 创建菜单条 创

38、建菜单,将菜单加入菜单条 创建菜单项实现用户需要的功能,将菜单项加入菜单 菜单条(JMenubar) JMenubar类负责创建菜单条,菜单条将被添加到窗口的顶端。JMenubar菜单条不具备Windows特性,它也不具备顶层容器类的特性,即不能独立显示出来,需要依赖顶层容器。,菜单 - 固定的菜单,JMenubar的常用属性: listenerList 事件侦听器列表 TOOL_TIP_TEXT_KEY 光标位于组件上方时显示的注释 WHEN_FOCUSED 用于registerKeyboardAction的常量,意味着在组件获得焦点时应该调用命令 WHEN_IN_FOCUSED_WINDO

39、W 用于registerKeyboardAction的常量,意味着当接收组件处于获得焦点的窗口内或者其本身就是获得焦点的组件时,应该调用命令,菜单 - 固定的菜单,JMenubar的常用方法 : JMenubar() 创建新的菜单栏 add(JMenuc) 将指定的菜单追加到菜单栏的末尾 getMenu(intindex) 返回菜单栏中指定位置的菜单。参数index是给出菜单栏中位置的整数,第一个位置是0 getMenuCount() 返回菜单栏上的菜单数isSelected()如果当前已选择了菜单栏的组件,则返回true setSelected(Componentsel) 设置当前选择的组件

40、,更改选择模型 JFrame 类提供setJMenuBar(JMenuBar menubar)方法可以将菜单条添加到窗口顶端。,菜单 - 固定的菜单, 菜单(JMenu) JMenu类负责创建菜单,菜单将被放在菜单条里。 JMenu的常用方法 : JMenu() 构造没有文本的新 Jmenu JMenu(Strings) 构造一个新 JMenu,用提供的字符串作为其文本 add(JMenuItemmenuItem) 将某个菜单项追加到此菜单的末尾 add(Strings) 创建具有指定文本的菜单项,并将其追加到此菜单的末尾 getItem(intpos) 返回指定位置的JMenuItem ge

41、tItemCount() 返回菜单上的项数,包括分隔符 insert(JMenuItemmi, intpos) 在给定位置插入指定的JMenuitem insert(Strings, intpos) 在给定的位置插入一个具有指定文本的新菜单项,菜单 - 固定的菜单,remove(Componentc) 从此菜单移除组件c remove(intpos) 从此菜单移除指定索引处的菜单项 remove(JMenuItemitem) 从此菜单移除指定的菜单项 removeAll() 从此菜单移除所有菜单项 菜单项(JMenuItem) JMenuItem类负责创建菜单项,菜单项将被放在菜单里。 JMe

42、nuItem的常用方法 : JMenuItem()创建不带有设置文本或图标的JMenuItem JMenuItem(Stringtext) 创建带有指定文本的JmenuItem setEnabled(booleanb) 启用或禁用菜单项 getLabel()返回菜单选项的名字 addActionListener(ActionListenerl)向菜单项增加监视器,从菜单项接受行动事件(单击某个菜单项) 菜单项上可以发生ActionEvent,其接口及实现方法和JButton相同。,菜单 - 固定的菜单,例如,在JFrame顶端创建“文件”菜单,在“文件”菜单中创建“添加”、“删除”和“退出”子

43、菜单。程序主要代码如下: JFrame jf=new JFrame(); JMenuBar menubar = new JMenuBar(); jf.setJMenuBar(menubar); JMenu menuFile = new JMenu(文件); menubar.add(menuFile); JMenuItem add = new JMenuItem(添加); JMenuItem del= new JMenuItem(删除); JMenuItem exit= new JMenuItem(退出); menuFile.add(add);menuFile.add(del);menuFile

44、.add(exit); jf.setVisible(true);,菜单 - 弹出式菜单,弹出式菜单的建立与普通菜单类似,但可以不需要加标题。创建弹出式菜单的步骤分成三步: 创建一个空的弹出式菜单 将菜单项添加到弹出式菜单中 在容器中添加鼠标右键事件的处理代码 JPopupMenu的常用方法 : JPopupMenu() 构造一个不带“调用者”的JPopupMenu JPopupMenu(Stringlabel) 构造一个具有指定标题的JPopupMenu。参数label可以被UI用作弹出菜单的标题显示的字符串 add(JMenuItemmenuItem) 将指定菜单项添加到此菜单的末尾,菜单

45、- 弹出式菜单,add(Strings) 创建具有指定文本的菜单项,并将其添加到此菜单的末尾 addSeparator() 将新分隔符添加到菜单的末尾getLabel()返回弹出菜单的标签 setPopupSize(intwidth, intheight) 将弹出窗口的大小设置为指定的宽度和高度 addMenuKeyListener(MenuKeyListenerl) 将l添加到弹出菜单 addPopupMenuListener(PopupMenuListenerl) 添加PopupMenu监视器 show(Componentinvoker,intx, inty) 在组件调用者的坐标空间中的位

46、置X、Y显示弹出菜单。参数invoker指弹出菜单在其空间中显示的组件;参数x用于显示弹出菜单的调用者的坐标空间中的X坐标;参数y用于显示弹出菜单的调用者的坐标空间中的Y坐标,菜单 - 弹出式菜单,例如,创建一个弹出式菜单,包括“添加”、“删除”和“退出”菜单。程序主要代码如下: JPopupMenu popup=new JPopupMenu(); JMenuItem add=new JMenuItem(添加); JMenuItem del=new JMenuItem(删除); JMenuItem exit=new JMenuItem(退出); popup.add(add); popup.ad

47、d(del); popup.add(exit); addMouseListener(new MouseAdapter()/添加鼠标右键事件的处理代码 public void mouseReleased(MouseEvent event) if(event.isPopupTrigger() popup.show(event.getComponent(),event.getX(),event.getY(); );,JApplet,JApplet类继承了Applet类,而Applet类是Panel类的子类。通过继承javax.swing.JApplet来实现Applet编程。 在Java Apple

48、t中,可以实现图形绘制、字体和颜色控制、动画和声音的插入、人机交互及网络交流等功能。 Applet程序的特点 一个Java Applet程序中必须有一个类是Applet类的子类,该子类是Java Applet程序的主类,并且主类必须修饰为public的。Applet程序是一种不能单独运行但可嵌入在其他应用程序中的小程序。Applet类提供了Java Applet程序及其运行环境之间的标准接口。 Applet生命周期 Java Applet应用程序的生命周期相对于Application而言较为复杂。在Java Applet的生命周期中,共有初始态、运行态、停止态和消亡态四种状态。,JApplet

49、,Applet常用方法: init() 初始化处理 start() 启动Applet时所要做的工作 paint(g) 在Applet的界面中绘制文字、图形等 update(g) 实现Applet画面的刷新,默认清除画面后调paint(g) repaint() 重新绘制,它将调用update(g) stop() 停止Applet前所要做的工作 destroy() 浏览器关闭,Applet退出前所要做的工作 getGraphics() 为组件创建一个图形上下文,JApplet, Applet的图形绘制 借助Applet 的“画笔”(Graphics)对象可调用如表8.24所示的方法实现各类图形的绘

50、制。在paint方法执行时,Applet将自动将自己的“画笔”通过参数传递给方法,在其它情形下,也可以通过由父类Component继承而来的getGraphics()方法得到“画笔”。 Graphics常用方法 : setColor(Colorc) 设置当前颜色为指定颜色c drawString(String s, int x,int y) 绘制文字 drawLine(int x1, int y1, int x2, int y2) 绘制直线 drawRect(int x, int y, int width, int height) 绘制矩形,JApplet,drawOval(int x, in

51、t y, int width, int height)绘制椭圆 drawPolygon(int xPoints, int yPoints, int nPoints)绘制多边形 drawArc(intx, inty, intwidth, intheight, intstartAngle, intarcAngle)绘制圆弧 drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)绘制园角矩形 fillOval(int x, int y, int width, int height)绘制填充椭圆 f

52、illRect(int x, int y, int width, int height)绘制填充矩形 fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)绘制填充园角矩形 fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)绘制填充扇形,本章小结,Java事件处理流程为组件发生动作后,产生相应的事件,事件被传递给相应的监视器(或适配器),监视器(或适配器)调用相应处理方法来处理事件。 javax.swing.eve

温馨提示

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

评论

0/150

提交评论