通过例子学习swing图形用户界面设计.ppt_第1页
通过例子学习swing图形用户界面设计.ppt_第2页
通过例子学习swing图形用户界面设计.ppt_第3页
通过例子学习swing图形用户界面设计.ppt_第4页
通过例子学习swing图形用户界面设计.ppt_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

第五章用Swing编写图形界面 2 用Swing设计图形界面的步骤 设置窗口框架 创建Jframe子类 设置内容面板 创建容器对象 对面板进行布局加入图形组件监听用户操作响应用户操作 实现具体业务功能 3 Swing组件分类 1 顶层容器 JFrame2 中间容器 JPanel3 基本组件 实现人际交互的组件 如Jbutton JComboBox JList JMenu JSlider JTextField 4 框架JFrame Swing中 用JFrame类描述框架JFrame的常用构造方法有 JFrame JFrame Stringtitle 创建一个标题为title的框架 5 框架JFrame JFrame的常用成员方法 voidsetVisible booleanb 参数为true时设置框架可见voidsetSize doublew doubleh 设置框架的宽和高voidsetLocation intx inty 设置窗口左上角的坐标ContainergetContentPane 返回内容面板voidsetDefaultCloseOperation intoperation 设置关闭窗口后的默认操作 6 框架JFrame 继承JFrame定义一个新的框架类 并显示这个框架类的对象 importjavax swing JFrame classEmptyFrameextendsJFrame publicEmptyFrame Stringtitle super title 调用超类的构造方法setSize 200 150 publicclassEx publicstaticvoidmain String args EmptyFramef newEmptyFrame 空的框架 f setDefaultCloseOperation JFrame EXIT ON CLOSE f setVisible true 7 在框架中添加组件 JFrame包含一个叫内容面板 contentpane 的容器 向JFrame添加组件不是将组件添加到JFrame 而是添加到内容面板中向JFrame添加组件首先必须调用getContentPane 方法获得JFrame的内容面板内容面板是Container的对象 Container的add 方法将组件加入内容面板 8 4在框架中添加组件 在框架窗口中添加按钮组件 并在屏幕的中央显示框架classButtonFrameextendsJFrame ButtonFrame super 按钮和框架 JButtonjb newJButton OK 创建按钮对象jbContainercon getContentPane 获取内容面板con add jb 将按钮对象jb加入内容面板 publicclassExample9 2 publicstaticvoidmain String args JFramebf newButtonFrame 超类变量引用子类对象bf setSize 200 150 bf setLocation 400 300 bf setDefaultCloseOperation JFrame EXIT ON CLOSE bf setVisible true 9 面板JPanel JPanel是中间容器 它不能在屏幕上独立显示 但可以容纳其它组件 然后作为一个整体放置在JFrame中JPanel的常用构造方法和成员方法有 JPanel JPanel LayoutManagerlayout Componentadd Componentcomp 向面板添加组件 继承自Container类 10 面板JPanel 把按钮加入面板 再把这个面板放在框架中 classJPanelAppextendsJFrame JPanelApp setTitle 使用JPanel JPaneljp newJPanel JButtonjb newJButton OK jp add jb 将按钮加入面板add jp 将面板加入框架窗口的内容面板 publicclassEx publicstaticvoidmain String args JPanelAppf newJPanelApp f setSize 200 150 f setLocation 400 300 f setDefaultCloseOperation JFrame EXIT ON CLOSE f setVisible true 11 颜色Color Color是类库中java awt包中的类 它定义了13种表示标准颜色的static常量 BLACKBLUECYANDARK GRAYGRAYGREENLIGHT GRAYMAGENTAORANGEPINKREDWHITEYELLOW 12 颜色Color 除标准颜色外 还可以使用下列构造方法自定义颜色 Color intred intgreen intblue Component类中定义了如下方法设置组件的背景色 voidsetBackground Colorc 13 6颜色Color 显示一个空的框架窗口 框架的背景色设置成红色 publicclassExample9 4 publicstaticvoidmain String args JFramef newJFrame f setTitle 红色背景 f setSize 200 150 f setLocation 400 300 f setDefaultCloseOperation JFrame EXIT ON CLOSE Containercon f getContentPane 获取内容面板con setBackground Color RED 设置背景色f setVisible true 14 布局管理器 在容器中的所有组件的布局 位置和大小 由布局管理器来控制 在java中提供了下面的几种布局管理器 FlowLayoutBorderlayoutGridLayoutCardLayoutGridBagLayout 15 布局管理器 BorderLayout是顶层容器 JFrame JDialog 和JApplet 的默认布局管理器 有五个位置组件 16 布局管理器 BorderLayout 17 布局管理 ContainercontentPane getContentPane contentPane setLayout newBorderLayout contentPane add newJButton Button1 NORTH BorderLayout NORTH contentPane add newJButton 2 CENTER BorderLayout CENTER contentPane add newJButton Button3 WEST BorderLayout WEST contentPane add newJButton Long NamedButton4 SOUTH BorderLayout SOUTH contentPane add newJButton Button5 EAST BorderLayout EAST 18 布局管理器 FlowLayout组件按照加入的先后循序从左向右排列 一行排满后之后就下转到下一行继续从左至右排列每一行中的组件都居中排列 19 布局管理器 FlowLayout 20 布局管理 importjava awt importjavax swing publicclassFlowWindowextendsJFrame publicFlowWindow ContainercontentPane getContentPane contentPane setLayout newFlowLayout contentPane add newJButton Button1 contentPane add newJButton 2 contentPane add newJButton Button3 contentPane add newJButton Long NamedButton4 contentPane add newJButton Button5 publicstaticvoidmain Stringargs FlowWindowwin newFlowWindow win setTitle FlowLayout win pack win setVisible true 21 布局管理器 GridLayout基本布局策略是把容器的空间划分成若干行乘若干列的网格区域 组件就位于这些划分出来的小区域中 所有的区域大小一样 组件按从左到右 从上到下的方法加入 用构造函数划分出网格的行数和列数 newGridLayout 行数 列数 22 布局管理器 GridLayout 23 布局管理 importjava awt importjavax swing publicclassGridWindowextendsJFrame publicGridWindow ContainercontentPane getContentPane contentPane setLayout newGridLayout 3 2 contentPane add newJButton Button1 contentPane add newJButton 2 contentPane add newJButton Button3 contentPane add newJButton Long NamedButton4 contentPane add newJButton Button5 24 事件处理 事件 键盘 鼠标 系统状态改变 事件源 产生事件的组件 监听器 系统随时去监视用户对输入设备 键盘和鼠标 的操作 事件处理机制 监视到某个动作产生时 系统会去执行特定的事件 25 事件处理机制 建立事件监听器的步骤引入系统事件类包 如importjava awt Event 在方法中调用事件源对象的方法 如addActionListener 注册事件源对象的事件监听者 如btn addActionListener this 实现事件接口中的相关方法 如actionPerformed 即加入代码以对所发生的事件作出处理 26 图形组件 JLabel是用来显示包含文字或图形的标签 用户不能编辑所显示的文字 构造函数 JLabel 生成JLabel对象 JLabel Stringtext 生成包含文字的JLabel对象 JLabel Stringtext intalignment 生成包含文字的JLabel对象并指定其水平对齐的方式 JLabel Stringtext Iconicon intalignment 生成包含图形和文字的JLabel对象 文字会显示在图形的后面 标签 27 图形组件 voidsetText Stringtext 定义该组件所能显示的文字 voidsetIcon Iconicon 定义该组件所能显示的图形 voidsetHorizontalAlignment intalignment 设置标记内容的水平对齐方式 LEFT CENTER RIGHT LEADING和TRAILING voidsetVerticalAlignment intalignment 设置标记内容的垂直对齐方式 TOP CENTER和BOTTOM 常用的方法 28 importjava awt importjava awt event importjavax swing publicclasslabel publicstaticvoidmain String args JFramef newJFrame Containercontent f getContentPane JLabellabel1 newJLabel Label1 JLabellabel2 newJLabel Label2 label2 setHorizontalTextPosition JLabel LEFT label2 setVerticalTextPosition JLabel BOTTOM content setLayout newGridLayout 2 2 content add label1 content add label2 f setVisible true 29 CardLayout布局 容器可以容纳多个组件 但同一时刻容器只能从这些组件中选出一个来显示 就像一叠 扑克牌 创建CardLayout对象作为布局 如 Mycard newCardLayout 使用容器的setLayout 方法为容器设置布局 如 con setLayout Mycard 30 CardLayout布局 调用容器的add 方法将组件加入容器 如 con add 组件 或add 组件代号 组件 CardLayout类的构造方法 CardLayout 创建间距为零的对象 CardLayout inthgap intvgap 创建带有水平hgap和垂直vgap间距的对象 31 SwingGUI组件 JTexField JComboBox JCheckBox JButton JRadioButton JLabel JTexArea 32 按钮 JButton类用来生成按钮 常用的构造函数如下 JButton 生成JButton对象 JButton Iconicon 生成以图形表示的JButton对象 JButton Stringtext 生成以文字表示的JButton对象 JButton Stringtext Iconicon 生成包含文字和图形的JButton对象 33 例9 5 importjava awt importjava awt event importjavax swing classframeextendsJFrameimplementsActionListener inttimes JButtonbutton1 JLabellabel1 publicframe super ButtonExample Containercontent getContentPane times 0 button1 newJButton SayHello label1 newJLabel setBackground Color white setLayout newGridLayout 2 1 button1 addActionListener this 为按钮添加事件监听器content add button1 content add label1 34 例9 5 publicvoidactionPerformed ActionEvente if e getSource button1 times 1 Stringname newString Hello youhaveclickedthebutton name times times label1 setText name publicclassButton publicstaticvoidmain String args finalframef newframe f setBounds 100 100 300 300 f setVisible true 35 程序运行如图所示 按钮示例 36 文本域与文本区 文本域 JTextField 和文本区 JTextArea 可以用来接受用户输入的文本 文本域允许用户编辑单行的文本 而文本区则可以编辑多行文本 JTextField的构造函数如下 JTextField 生成JTextField JTextField intn 将文本域的大小设为n行 JTextField Stringtext 指定文本域的默认值为text JTextField Stringtext intcols 设定文本域为cols行 并指定默认值 37 文本域与文本区 常用方法publicvoidsetText Strings 设置文本框publicStringgetTetx 获取文本框内容密码域 JPasswordField 是JTextField的子类 用来接收输入的密码 char getPassword 获取输入的口令chargetEchoChar 获取口令框显示字符voidsetEchoChar charc 设置口令框中的显示字符 系统默认 38 importjava awt importjava awt event importjavax swing publicclasslabel publicstaticvoidmain String args JFramef newJFrame Containercontent f getContentPane JPanelpanel newJPanel panel setLayout newGridLayout 2 2 panel add newJLabel UserName panel add newJTextField 15 panel add newJLabel Password panel add newJPasswordField 15 content add panel f pack f setVisible true 39 选择组件 复选框JCheckBox常用构造方法有 JCheckBox JCheckBox Stringtext text是文本JCheckBox Stringtext booleanselected 其中的boolean参数指定复选框的初始状态是选中还是未选中 默认取未选中状态 40 选择组件 JCheckBox常用的成员方法有 voidsetSelected booleanselected 设置是否选中booleanisSelected 返回复选框当前状态 41 选择组件 复选框被点击后其状态在选中和未选中之间改变 并产生两种事件对象 先触发ItemEvent事件 然后触发ActionEvent事件 ItemEvent的监听接口是ItemListener 这个接口中只有一个响应ItemEvent事件的方法 publicvoiditemStateChanged ItemEvente ItemEvent的下列方法可以返回产生该事件的事件源对象名称 ObjectgetSource 42 例JFrame中放置一个标签和控制标签字体的3个复选框 通过这三个复选框控制标签文本的字体 43 classJCeckBoxDemoextendsJFrameimplementsItemListener JCheckBoxjc1 jc2 jc3 JLabeljl Fontfont JCeckBoxDemo jc1 newJCheckBox 斜体 jc2 newJCheckBox 粗体 jc3 newJCheckBox 大体 JPaneljp newJPanel jp add jc1 jp add jc2 jp add jc3 jl newJLabel ThisisaJCeckBoxDemo font newFont Serif Font PLAIN 14 jl setFont font 设置标签初始字体add jl add jp BorderLayout SOUTH jc1 addItemListener this jc2 addItemListener this jc3 addItemListener this 44 复选框状态改变后的响应程序publicvoiditemStateChanged ItemEvente intstyle 0 intsize if jc1 isSelected style Font ITALIC if jc2 isSelected style style Font BOLD if style 0 style Font PLAIN if jc3 isSelected size 20 elsesize 14 font newFont Serif style size jl setFont font 重新设置字体 45 publicclasstest publicstaticvoidmain String args JCeckBoxDemof newJCeckBoxDemo f setTitle JCheckBoxDemo f setSize 250 180 f setLocation 400 300 f setDefaultCloseOperation JFrame EXIT ON CLOSE f setVisible true 46 选择组件 单选按钮JRadioButton常用的构造方法有 JRadioButton JRadioButton Stringtext text是单选按钮的文本JRadioButton Stringtext booleanselected JRadioButton Stringtext Iconimage booleanselected 其中的boolean参数指定单选按钮的初始状态是选中还是未选中 默认是未选中状态 47 选择组件 JRadioButton常用的成员方法有 voidsetSelected booleanselected 设置是否选中booleanisSelected 返回单选按钮当前状态 48 选择组件 与JRadioButton紧密相关的一个类是按钮组ButtonGroup同一个ButtonGroup中只能有一个单选按钮处于选中状态 如果一个窗口中有几组单选按钮 每组必须新建一个ButtonGroup对象 并将该组所有单选按钮加入这个按钮组 才能确保各组的选择互不干扰JRadioButtonjb1 jb1 jb1 newJRadioButton 男 jb2 newJRadioButton 女 ButtonGroupbg newButtonGroup bg add jb1 把单选按钮加入按钮组bg add jb2 jb1和jb2在同一个按钮组中 只能有一个处于选中状态 49 例 用单选按钮控制标签的字体大小和颜色 50 classJRadioButtonDemoextendsJFrameimplementsActionListener JRadioButtonjf1 jf2 jf3 JRadioButtonjc1 jc2 jc3 JLabeljL JRadioButtonDemo JLabeljfL newJLabel 字体大小 jf1 newJRadioButton 小号 jf2 newJRadioButton 中号 true 设置初始状态为选中jf3 newJRadioButton 大号 ButtonGroupbg1 newButtonGroup bg1控制字体大小bg1 add jf1 bg1 add jf2 bg1 add jf3 JPaneljp1 newJPanel newGridLayout 1 4 jp1 add jfL jp1 add jf1 jp1 add jf2 jp1 add jf3 jf1 addActionListener this jf2 addActionListener this jf3 addActionListener this 51 ButtonGroupbg2 newButtonGroup bg2控制字体颜色bg2 add jc1 bg2 add jc2 bg2 add jc3 JPaneljp2 newJPanel newGridLayout 1 4 jp2 add jcL jp2 add jc1 jp2 add jc2 jp2 add jc3 jc1 addActionListener this jc2 addActionListener this jc3 addActionListener this jL newJLabel JavaLanguage jL setFont newFont Serif Font PLAIN 20 add jL add jp1 BorderLayout NORTH add jp2 BorderLayout SOUTH 52 单选按钮状态改变后的响应程序publicvoidactionPerformed ActionEvente 改变字体大小if e getSource jf1 jL setFont newFont Serif Font PLAIN 10 elseif e getSource jf2 jL setFont newFont Serif Font PLAIN 20 elseif e getSource jf3 jL setFont newFont Serif Font PLAIN 30 改变颜色if e getSource jc1 jL setForeground Color RED elseif e getSource jc2 jL setForeground Color GREEN elseif e getSource jc3 jL setForeground Color BLUE 53 选择组件 组合框JComboBox常用的构造方法和成员方法有 JComboBox 创建一个空组合框JComboBox Object items 创建一个包含指定数组元素的组合框voidaddItem Objectitem 添加项目到组合框ObjectgetItemAt intindex 返回指定序号的项目intgetSeletedIndex 返回选中的项目序号ObjectgetSeletedItem 返回选中的项目 54 classJComboBoxDemoextendsJFrameimplementsItemListener JComboBoxjcb JComboBoxDemo Stringitems 请选择颜色 红 橙 黄 jcb newJComboBox items 新建初始有三个选项的组合框jcb addItem 绿 向组合框添加新选项jcb addItem 蓝 add jcb BorderLayout NORTH jcb addItemListener this 选中JComboBox中的选项的响应程序publicvoiditemStateChanged ItemEvente intindex jcb getSelectedIndex Colorcolor Color WHITE 55 switch index case1 color Color RED break case2 color Color ORANGE break case3 color Color YELLOW break case4 color Color GREEN break case5 color Color BLUE break Containercon getContentPane 获取框架窗口的内容面板con setBackground color 改变背景色 56 菜单2 1 显示一个项目列表 指明用户可以执行的各项操作 红色绿色黑色 菜单 子菜单 菜单项 57 JMenuBar类2 1 只要选中JMenuItem 就会产生通过重写actionPerformed 方法进行处理的ActionEvent JMenuBar JMenu JMenuItem 58 菜单的构建 1 用类JMenuBar创建菜单条利用JMenuBar 构造方法创建 例如 JMenuBaraMenuBar newJMenuBar 2 用类JMenu创建菜单用JMenu的构造方法来创建菜单 构造方法为 publicJMenu Strings 用字符串s作为文本来构造菜单 例如 JMenuaMenu newJMenu 文件 59 3 用类JMenuItem创建菜单项 类JMenuItem的构造方法 PublicJMenuItem Stringtext 创建一个具有指定文本的菜单项 例如 JMenuItemaMenuItem newJMenuItem 新建 60 创建菜单 续 4 将菜单项加入到菜单中 将菜单加入到菜单条中 例如 aMenuBar add aMenu aMenuBar add aMenuItem 向菜单添加分隔线 addSeparator 5 将菜单条加入容器中publicvoidsetJMenuBar JMenuBarmenubar 6 处理菜单项选择事件监听菜单项ActionEvent事件 61 classMenuDemoextendsJFrameimplementsActionListener JMenuItemjm1 jm2 jm3 jm4 jm5 JTextFieldjt1 jt2 jt3 MenuDemo JMenuBarmb newJMenuBar this setJMenuBar mb JMenum1 newJMenu 运算 JMenum2 newJMenu 程序 mb add m1 mb add m2 jm1 newJMenuItem 加 jm2 newJMenuItem 减 jm3 newJMenuItem 乘 jm4 newJMenuItem 除 jm5 newJMenuItem 终止 m1 add jm1 m1 add jm2 m1 add jm3 m1 add jm4 m2 add jm5 62 jm1 addActionListener this jm2 addActionListener this jm3 addActionListener this jm4 addActionListener this jm5 addActionListener this jt3 newJTextField 10 this getContentPane add jt3 publicvoidactionPerformed ActionEvente if e getSource jm5 System exit 0 if e getSource jm1 jt3 setText 进行加法运算 if e getSource jm2 jt3 setText 进行减法运算 if e getSource jm3 jt3 setText 进行乘法运算 if e getSource jm4 jt3 setText 进行除法运算 63 工具栏 Swing使用JToolBar作为存放工具栏组件的容器 工具栏中的组件通常是图标形式显示的按钮 JToolBar常用的构造方法和成员方法有 JToolBar add Componentcomp 增加组件到工具栏addSeparator 在工具栏末尾添加一个分隔符 64 5工具栏 工具栏上的组件调用下列方法可以为该命令设置提示信息 setToolTipText Stringtext 例 工具栏中存放四个带图标按钮代表四种软件产品 光标停留在按钮上 显示这个按纽表示何种软件 点击按钮 由标签文本解释这种软件的作用 65 classToolBarDemoextendsJFrameimplementsActionListener JButtonb1 b2 b3 b4 JLabeljl ToolBarDemo Iconi1 newImageIcon images excel gif Iconi2 newImageIcon images pdf gif Iconi3 newImageIcon ima

温馨提示

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

评论

0/150

提交评论