第8章 常用Swing组件GUI设计.ppt_第1页
第8章 常用Swing组件GUI设计.ppt_第2页
第8章 常用Swing组件GUI设计.ppt_第3页
第8章 常用Swing组件GUI设计.ppt_第4页
第8章 常用Swing组件GUI设计.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

第8章常用Swing组件GUI设计 本章主要内容 常用Swing组件菜单设计对话框设计本章小结 7 1图形用户界面的概述 8 1常用Swing组件 Swing是AWT的扩展 它提供了许多新的图形界面组件 Swing组件以 J 开头 除了有与AWT类似的按钮 JButton 标签 JLabel 复选框 JCheckBox 菜单 JMenu 等基本组件外 还增加了一个丰富的高层组件集合 如表格 JTable 树 JTree 等 8 1常用Swing组件 8 1 1常用Swing组件的继承关系javax swing包中提供了大量的组件 这些组件从功能上分可分为 1 顶层容器 JFrame JApplet JDialog JWindow共4个 2 中间容器 JPanel JScrollPane JSplitPane JToolBar 3 特殊容器 在GUI上起特殊作用的中间层 如JInternalFrame JLayeredPane JRootPane 4 基本控件 实现人际交互的组件 如JButton JComboBox JList JMenu JtextField 5 不可编辑信息的显示 向用户显示不可编辑信息的组件 例如JLabel JProgressBar ToolTip 6 可编辑信息的显示 向用户显示能被编辑的格式化信息的组件 如JColorChooser JFileChooser等 本节所述组件的继承关系如图8 1所示 图8 1常用组件的继承关系 图8 1常用组件的继承关系 8 1常用Swing组件 8 1 2标签 JLabel 称为标签 它是一个静态组件 可以显示一行静态文本和图标标签只起信息说明的作用 而不接受用户的输入 也无事件响应 其常用构造方法如下 JLabel 构造一个既不显示文本信息也不显示图标的空标签 JLabel Stringtext 构造一个显示文本信息的标签 JLabel Stringtext inthorizontalAlignment 构造一个显示文本信息的标签 JLabel Stringtext Iconicon inthorizontalAlignment 构造一个同时显示文本信息和图标的标签 8 1常用Swing组件 8 1 3文本组件文本组件用于显示信息和提供用户输入文本信息的主要工具 在SWING中提供了文本框 JTextField 文本域 JTextArea 口令输入域 JPasswordField 等多个文本组件都有一个共同的基类JTextComponent 他们不仅有自己的成员方法 同时还继承了父类提供的成员方法 在JTextComponent类中定义的主要方法如表8 1所示 8 1常用Swing组件 8 1 3文本组件1 JTextField它是一个单行文本输入框 可输出任何文本的信息 也可以接受用户输入 1 JTextField常用的构造方法 JTextField 用于创建一个空的文本框 一般作为输入框 JTextField intcolumns 构造一个具有指定列数的空文本框 JTextField Stringtext 构造一个显示指定字符的文本框 作为输出框 JTextField Stringtext intcolumns 构造一个具有指定列数 并显示指定初始字符串的文本域 2 JTextField组件常用的成员方法 setFont Fontf 设置字体 setActionCommand Stringcom 设置动作事件使用的命令字符串 setHorizontalAlignment intalig 设置文本的水平对齐方式 8 1常用Swing组件 8 1 3文本组件1 JTextField 3 事件响应JTextField类只引发ActionEvent事件 当用户在文本框中按回车键时引发 当监听者对象的类声明实现了ActionListener接口 并且通过addActionListener 语句注册文本框的监听者对象后 监听程序内部动作事件的actionPerformed ActionEvente 方法就可以响应动作事件了 例8 1 文本框JtextField的应用文本框JtextField的应用 8 1常用Swing组件 8 1 3文本组件2 JTextAreaJTextArea被称为文本域 它与文本框的主要区别是 文本框只能输入 输出一行文本 而文本域可以输入 输出多行文本 1 常用的构造方法 JTextArea 构造一个空的文本域JTextArea Stringtext 构造显示初始字符串信息的文本域JTextArea introws intcolumns 构造具有指定行和列的空的文本域 这两个属性用来确定首选大小JTextArea Stringtext introws intcolumns 构造具有指定文本行和列的新的文本域 8 1常用Swing组件 8 1 3文本组件2 JTextArea 2 JTextArea组件常用的成员方法 insert Stringstr intpos 将指定文本插入指定位置 Append Stringstr 将给定文本追加到文档结尾replaceRange Stringstr intstart intend 用给定的新文本替换从指示的起始位置到结尾位置的文本setLineWrap booleanwrap 设置文本域是否自动换行 默认为false 3 事件响应JTextArea的事件响应由JTextComponent类决定 JTextComponent类可以引发两种事件 DocumentEvent事件与UndoableEditEvent事件 当用户修改了文本区域中的文本 如做文本的增 删 改等操作时 TextComponent类将引发DocumentEvent事件 当用户在文本区域上撤消所做的增 删 改时 TextComponent类将引发UndoableEditEvent事件 8 1常用Swing组件 8 1 3文本组件3 JPasswordFieldJPasswordField组件实现一个密码框 用来接受用户输入的单行文本信息 在密码框中不显示用户输入的真实信息 而是通过显示一个指定的回显字符作为占位符 新创建密码框的默认回显字符为 可以通过成员方法进行修改 1 JPasswordField的常用构造方法 JPasswordField 构造一个空的密码框JPasswordField Stringtext 构造一个显示初始字符串信息的密码框JPasswordField intcolumns 构造一个具有指定长度的空密码框 2 JPasswordField的常用成员方法 setEchoChar charc 设置密码框的回显字符char getPassword 返回此密码框中所包含的文本chargetEchoChar 获得密码框的回显字符 8 1常用Swing组件 8 1 4按钮组件按钮是图形用户界面最常用 最基本组件 经常用到的按钮有JButton JCheckBox JRadioButton等 这些按钮类均是AbstractButton类的子类或者间接子类 AbstractButton类常用的成员方法 IcongetIcon 和setIcon Iconicon 获得和修改按钮图标StringgetText 和setText Stringtext 获取和修改按钮setEnabled booleanb 启用或禁用按钮setHorizontalAlignment intalignment 设置图标和文本的水平对齐方式StringgetActionCommand 和setActionCommand StringactionCommand 获取和设置按钮的动作命令 setRolloverIcon IconrolloverIcon 设置鼠标经过时按钮的图标setPressedIcon Iconpricon 设置按钮按下时的图标 8 1常用Swing组件 8 1 4按钮组件1 JButtonJButton是最常用 最简单的按钮 按钮可分为有无标签和图标几种情况 1 JButton类常用的构造方法JButton 创建一个无文本也无标签的按钮JButton Stringtext 创建一个具有文本提示信息但没有图标的按钮JButton Iconicon 创建一个具有图标 但没有文本提示信息的按钮JButton Stringtext Iconicon 创建一个即有文本提示信息又有图标的按钮 2 事件响应JButton类能引发ActionEvent事件 当用户用鼠标单击命令按钮时来触发 如果程序需要对此动作作出反应 就需要使用addActionListener 为命令按钮组成事件监听程序 该程序实现ActionListener接口 可使用ActionEvent类的方法getSource 方法获取引发事件的对象名 getActionCommand 方法来获取对象文本提示信息 例8 2 命令按钮和文本框域的使用命令按钮和文本框域的使用 8 1常用Swing组件 8 1 4按钮组件2 JCheckBox组件JCheckBox组件被成为复选框 它提供选中 未选中两种状态 并且可以同时选定多个 用户单击复选框就会改变该复选框原来的状态 1 JCheckBox组件类的常用构造方法 JCheckBox 构造一个无标签的复选框JCheckBox Stringtext 构造一个具有提示信息的复选框JCheckBox Stringtext booleanselected 创建具有文本的复选框并指定其最初是否处于选定状态创建复选框组件对象 可以通过JCheckBox类提供的成员方法设定复选框的属性 如通过setText Stringtext 设定文本提示信息 setSelected booleanb 方法设定复选框的状态 通过isSelected 方法获取按钮当前的状态 8 1常用Swing组件 8 1 4按钮组件2 JCheckBox组件 2 事件响应JCheckBox不仅可以触发ActionEvent事件还可以触发ItemEvent事件 ItemEvent事件当复选框 单选按钮已经下拉列表框中的选择状态发生变化时会触发该事件 要对该类事件进行处理需要用addItemListener 进行注册事件监听者 例8 3 JCheckBox的使用JCheckBox的使用 8 1常用Swing组件 8 1 5组合框 JComboBox 组合框或者下拉列表框 它有两种形式 不可编辑的和可编辑的 1 JComboBox常用的构造方法有两种形式 JComboBox 创建一个没有任何可选项的组合框JCombBox Object items 根据Object数组创建组合框 Object数组的元素即为组合框中的可选项 8 1常用Swing组件 8 1 5组合框 JComboBox 2 JComboBox类常用成员方法如下 voidaddItem ObjectanObject 为项列表添加选项ObjectgetItemAt intindex 返回指定索引处的列表项intgetItemCount 返回列表中的项数intgetSelectedIndex 返回列表中与给定项匹配的第一个选项ObjectgetSelectedItem 返回当前所选项 voidremoveAllItems 从项列表中移除所有项 removeItem ObjectanObject 从项列表中移除指定的项 removeItemAt intanIndex 移除指定位置anIndex处的项 setEditable booleanaFlag 确定JComboBox字段是否可编辑 8 1常用Swing组件 8 1 5组合框 JComboBox 3 事件响应JComboBox组件能够响应的事件分为选择事件与动作事件 若用户选取下拉列表中的选择项时 则激发ItemEvent事件 使用ItemListener事件监听者进行处理 若用户在JComboBox上直接输入选择项并回车时 则激发ActionEvent事件 使用ActionListener事件监听者进行处理 例8 5 JComboBox的使用JComboBox的使用 8 1常用Swing组件 8 1 6列表框 JList List称为列表组件 它可供用户进行选择的一系列可选项JList组件与JComboBox组件的最大区别是 JComboBox组件一次只能选择一项 而JList组件一次可以选择一项或多项 选择多项时可以是连续区间选择 也可以是不连续的选择 1 JList常用的构造方法 JList 构造一个空列表JList Object listData 构造一个列表 列表的可选项由对象数组listData指定JList VectorlistData 构造一个列表 列表的可选项由Vector型参数dataModel 8 1常用Swing组件 8 1 6列表框 JList 2 JList类常用的成员方法 intgetSelectedIndex 返回所选的第一个索引 如果没有选择项 则返回 1voidsetSelectionBackground Colorc 设置所选单元的背景色voidsetSelectionForeground Colorc 设置所选单元的前景色voidsetVisibleRowCount intnum 设置不使用滚动条可以在列表中显示的首选行数voidsetSelectionMode intselectionMode 确定允许单项选择还是多项选择voidsetListData Object listData 根据一个object数组构造列表 8 1常用Swing组件 8 1 6列表框 JList 3 事件响应JList组件的事件处理一般可分为两种 一种是当用户单击列表框中的某一个选项并选中它时 将产生ListSelectionEvent类的选择事件 此事件是Swing的事件 另一种是当用户双击列表框中的某个选项时 则产生MouseEvent类的动作事件 若希望实现JList的ListSelectionEvent事件 首先必须声明实现监听者对象的类接口ListSelectionListener 并通过JList类的addListSelectionListener 方法注册文本框的监听者对象 再在ListSelectionListener接口的valueChanged ListSelectionEvente 方法体中写入有关代码 就可以响应ListSelectionEvent事件了采用JList显示图书的的详细信息采用JList显示图书的的详细信息 8 1常用Swing组件 8 1 7表格 JTable 表格在设计用户的可视化界面时非常有用 当需要显示一大堆统计数据时 用表格可以非常清楚的显示出来 1 JTable常用的构造方法 JTable 构造一个默认的表格JTable intnumRows intnumColumns 使用默认模式构造具指定行和列的表格JTable Object rowData Object columnNames 构造一个columnNames作为列名 显示二维数组中的数据的表格JTable VectorrowData VectorcolumnNames 构造columnNames作为列名 rowData中数据作为输入来源的表格 8 1常用Swing组件 8 1 7表格 JTable 2 JTable类常用的成员方法 voidaddColumn TableColumnaColumn 将列追加到表格数组的结尾intgetColumnCount 返回表格中的列数intgetRowCount 返回此表格中的行数voidmoveColumn intcolumn inttargetColumn 列移动到目标列所占用的位置voidremoveColumn TableColumnaColumn 从表格的列数组中移一列voidselectAll 选择表中的所有行 列和单元格ObjectgetValueAt introw intcolumn 返回指定单元格的值 setValueAt ObjectaValue introw intcolumn 设置表格指定单元格值例8 4JTable的使用JTable的使用 8 2菜单设计 菜单在GUI应用程序中有着非常重要的作用 通过菜单用户可以非常方便地访问应用程序的各个功能 是软件中必备的组件之一 利用菜单可以将程序功能模块化 Swing包中提供了多种菜单组件 他们的继承关系如图8 9所示 8 2菜单设计 1 菜单栏 JMenuBar 菜单栏是窗口中的主菜单 它只用来管理菜单 不参与交互式操作 Java应用程序中的菜单都包含在一个菜单栏对象之中 JMenuBar只有一个构造方法JMenuBar 而顶层容器类如JFrame JApplet等都有setMenuBar JMenuBarmenu 方法把菜单栏放到窗口的上 8 2菜单设计 2 菜单 JMenu 菜单是最基本的下拉菜单 用来存放和整合菜单项 JMenuItem 的组件 1 JMenu常用的构造方法 JMenu 创建一个空标签的JMenu对象 JMenu Stringtext 使用指定的标签创建一个JMenu对象 JMenu Stringtext Booleanb 使用指定的标签创建一个JMenu对象 并给出此菜单是否具有下拉式的属性 2 常用成员方法getItem intpos 得到指定位置的JmenuItemgetItemCount 得到菜单项数目包括分隔符 insert和remove 插入菜单项或者移除某个菜单项addSeparator 和insertSeparator intindex 在某个菜单项间加入分隔线 8 2菜单设计 3 菜单项 JMenuItem 菜单项是菜单系统中最基本的组件 它继承自AbstractButton类 单中选择某一项时会触发ActionEvent事件 1 常用的菜单构造方法如下 JMenuItem Stringtext 创建一个具有文本提示信息的菜单项JMenuItem Iconicon 创建一个具有图标的菜单项JMenuItem Stringtext Iconicon 创建有文本又有图标的菜单项JMenuItem Stringtext intmnemonic 创建一个指定文本和键盘快捷的菜单项 2 常用的成员方法 voidsetEnabled booleanb 启用或禁用菜单项voidsetAccelerator KeyStrokekeyStroke 设置加速键voidsetMnemonic charmnemonic 设置快捷键 8 2菜单设计 4 制作下拉菜单的一般步骤制作一个可用的菜单系统 一般需要经过下面的几个步骤 Step1创建一个JMenuBar对象并将其放置在一个JFrame中 Step2创建JMenu对象 Step3创建JMenuItem对象并将其添加到JMenu对象中 Step4把JMenu对象添加到JMenuBar中 例8 6 为图书管理系统创建系统菜单 创建系统菜单 8 2菜单设计 8 2 2弹出式菜单弹出式菜单 JPopupMenu 是一种比较特殊的特殊菜单 可以根据需要显示在指定的位置 弹出式菜单有两种构造方法 publicJPopupMenu 创建一个没有名称的弹出式菜单 publicJPopupMenu Stringlabel 构建一个有指定名称的弹出式菜单在弹出式菜单中可以像下拉式菜单一样加入菜单或者菜单项 在显示弹出式菜单式 必须调用show Componentinvoker intx inty 方法 例8 7 弹出式菜单的创建 弹出式菜单的创建 8 3对话框设计 Swing对对话框的开发提供了很好的支持 提供了JDialog JOptionPane JFileChooser等对话框组件 8 3 1对话框 JDialog 该类创建的对话框可分为模式对话框和非模式对话框 模式对话框需要用户在处理完该对话框之后才能继续与其他窗体的交互 非模式对话框允许用户处理对话框的同时与其它窗体交互 JDialog类的构造方法主要有 JDialog Frameowner 构造一个没有标题的非模式对话框JDialog Frameowner Stringtitle 构建一个有指定名称的非模式对话框JDialog Frameowner booleanmodal 构建一个有指定模式的无标题的对话框JDialog Frameowner Stringtitle booleanmodal 构建一个具有指定标题和指定模式的对话框 JDialogdialog newJDialog MainFrame 读者登录 true Containercontainer dialog getContentPane container setLayout newGridLayout 2 3 JLabelreaderIDLabel newJLabel 账号 JLabel RIGHT container add readerIDLabel JTextFieldreaderFieldText newJTextField 10 container add readerFieldText container add newJlabel container add newJLabel 密码 JLabel RIGHT JPasswordFieldpswdText newJPasswordField 10 container add pswdText JButtonokButton newJButton 确定 okButton addActionListener newLoginActionListener 为命令按钮注册时间container add okButton dialog setSize 270 120 dialog show true 8 3对话框设计 8 3 2标准对话框 JOptionPane 在JOptionPane类中定义了多个形如show Dialog的静态方法 根据对话框的用途可分为4种类型 提示信息的MessageDialog 要求用户进行确认的ConfirmDialog 可输入数据的InputDialog和由用户自己定义类型的OptionDialog 1 MessageDialogMessageDialog是提示信息对话框 这种对话框中通常只含有一个 确定 按钮 创建这种对话框的静态方法多种 下面给出其中一个 并对方法的参数给与说明 showMessageDialog ComponentparentComponent Objectmessage Stringtitle intmessageType Iconicon 其中 ComponentparentComponent对话框的父窗口对象 通常是指Frame或Dialog组件 其屏幕坐标将决定对话框的显示位置 此参数也可以为null 表示采用缺省的Frame作为父窗口 此时对话框将设置在屏幕的正中Objectmessage显示在对话框中的描述信息Stringtitle对话框的标题intmessageType对话框所传递的信息类型 messageType共有5种类型 分别用下述字符常量表达 ERROR MESSAGE INFORMATION MESSAGE WARNING MESSAGE QUESTION MESSAGE PLAIN MESSAGE 指定messageType后 对话框中就会出现相应的图标及提示字符串 使用PLAIN MESSAGE则没有图标Iconicon对话框上显示的装饰性图标 如果没有指定 则根据messageType参数显示缺省图标 例如为 例8 6 图书管理系统主菜单的 帮助 菜单中的 关于 Stringmsg 图书管理系统V1 0 nCopyright C 2008 2009 n nByAuthor Stringtitle 多读书 读好书 JOptionPane showMessageDialog container msg title JOptionPane INFORMATION MESSAGE 当单击菜单项时会显示如图8 13所示的消息对话框 8 3对话框设计 2 ConfirmDialogConfirmDialog称为确认对话框 这类对话框通常会询问用户一个问题 要求用户作YES NO的回答创建这种对话框的静态方法多种 如 showConfirmDialog ComponentparentComponent Objectmessage Stringtitle intoptionType intmessageType Iconicon 除了参数optionType外其他参数和MessageDialog相同 optionType参数用于指定按钮的类型 可有4种不同的选择 分别是DEFAULT OPTION YES NO OPTION YES NO CANCEL OPTION与OK CANCEL OPTION 该类方法的返回值是一个整数 根据用户按下的按钮而定 YES OK 0 NO 1 CANCEL 2 当用户直接关掉对话框时CLOSED 1 在 文件 菜单中的 退出 菜单项的事件响应类ExitActionListener的actionPerformed的方法体重写改写 publicvoidactionPerformed ActionEventevent intresult JOptionPane showConfirmDialog container 是否真的退出系统的使用 提示信息 JOptionPane YES NO OPTION JOptionPane QUESTION MESSAGE if result 0 表示单击是按钮setVisible false dispose System exit 0 8 3对话框设计 3 InputDialogInputDialog称为输入对话框 这类对话框可以让用户输入相关的信息 也可以提供信息让用户选择 避免用户输入错误 创建这种对话框的静态方法有多种如 showInputDialog ComponentparentComponent Objectmessage Stringtitle intmessageType Iconicon Object selectionValues ObjectinitialSelectionValue 其中参数Object selectionValues给用户提供了可能的选择值 这些数据会以JComboBox方式显示出来 而initialSelectionValue是对话框初始化时所显示的值 其它参数和MessageDialog相同 MyBorrowActionListener的actionPerformed的方法体重新改写publicvoidactionPerformed ActionEventevent Object user 管理员 借阅者 一般浏览者 ObjectselectValue JOptionPane showInputDialog container 请选择用户类型 提示信息 JOptionPane INFORMATION MESSAGE null user

温馨提示

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

评论

0/150

提交评论