![第四章 Java语言程序设计[肖敏]PPT演示课件_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-5/18/edcc0a74-2621-4736-8e52-ec5861db0694/edcc0a74-2621-4736-8e52-ec5861db06941.gif)
![第四章 Java语言程序设计[肖敏]PPT演示课件_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-5/18/edcc0a74-2621-4736-8e52-ec5861db0694/edcc0a74-2621-4736-8e52-ec5861db06942.gif)
![第四章 Java语言程序设计[肖敏]PPT演示课件_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-5/18/edcc0a74-2621-4736-8e52-ec5861db0694/edcc0a74-2621-4736-8e52-ec5861db06943.gif)
![第四章 Java语言程序设计[肖敏]PPT演示课件_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-5/18/edcc0a74-2621-4736-8e52-ec5861db0694/edcc0a74-2621-4736-8e52-ec5861db06944.gif)
![第四章 Java语言程序设计[肖敏]PPT演示课件_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-5/18/edcc0a74-2621-4736-8e52-ec5861db0694/edcc0a74-2621-4736-8e52-ec5861db06945.gif)
已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章实现客户端界面,本章学习要点:,了解Java图形界面编程方法;,JavaSwing包的使用;,掌握实现聊天室客户端编程所必须的基本知识与技能;,4.1需求分析,作为在线网络聊天室,要完成如下的功能:,实现一个用户聊天的软件运行界面。,通过这个界面在线用户应该能够输入聊天信息。,在线用户也应该能够看到所有其他用户发出的聊天信息。,4.2确定任务单:,任务:通过对需求的理解,经过分析,可以初步得出客户端界面大致如下图所示:,图4.1聊天室客户端界面,4.3任务:完成客户端窗口界面,一、确定步骤:,二、分析步骤:,1、确定登录窗口界面所用到的控件预备知识,Swing是AWT的扩展,它提供了许多新的图形界面组件。Swing组件以J开头,除了有与AWT类似的按钮(JButton)、标签(JLabel)、复选框(JCheckBox)、菜单(JMenu)等基本组件外,还增加了一些丰富的高层组件,如表格(JTable)、树(JTree)。,Java中常用的Swing组件如下表所示:,swing各组件功能及操作方法简介:,1)JFrame类创建窗口JFrame可为应用程序构建主框架,JFrame类继承了Frame类。Component:抽象类,归纳了所有图形用户界面上的组件。Containter:容器也是组件,特别的是容器中可以容放组件。构造方法,JFrame提供了两个方法:getContentPane和setContentPane就是用于获取和设置其ContentPane的。,JFrame的设置和显示方法,在JFrame窗口中加入组件,frame.getContentPane().add(childComponent),a)用getContentPane()方法获得JFrame的内容面板,再对其加入组件:,b)建立一个JPanel或JDesktopPane之类的中间容器,把组件添加到容器中,用setContentPane()方法把该容器置为JFrame的内容面板,JPanelcontentPane=newJPanel();/把其它组件添加到Jpanel中;frame.setContentPane(contentPane);/把contentPane对象设置成为frame的内容面板或者:frame.getContentPane.add(contentPane);,2)JPanel概述面板(JPanel)是一个轻量容器组件,用法与Panel相同,用于容纳界面元素,以便在布局管理器的设置下可容纳更多的组件,实现容器的嵌套。,JPanel,JScrollPane,JSplitPane,JInteralFrame都属于常用的中间容器,是轻量组件。JPanel的缺省布局管理器是FlowLayout。,2)JPanel概述构造方法:,publicJPanel():创建一个FlowLayout布局的面板publicJPanel(LayoutMangerlayout):创建一个指定布局的面板,如:JPanelp1=newJPanel(newBorderLayout();说明:面板的默认布局是FlowLayout,不同于Container的默认。,3)标签(JLabel),构造方法JLabel()创建一个空标签JLabel(Stringc)指定标签文本JLabel(Stringc,Icon,Imageiconicon,JLabel.left/JLabel.right)同时显示图标与文本常用设置方法设置标签显示文本:publicvoidsetText(Stringc)取得标签显示文本:publicStringgetText()字体设置:publicvoidsetFont(Fontf)前景色设置:publicvoidsetForeground(Colorc),按钮是窗口程序中最常用的一种组件,按钮提供用户快速启动某一动作的方法,用户只需做的就是单击它们。按钮由Button类创建,而Button类是由Component类直接扩展的。按钮是一个常用组件,按钮可以带标签或图象,用户可通过按钮发布命令。,4)按钮(JButton),构造方法:,JButton()JButton(Iconicon)/按钮上显示图标JButton(Stringtext)/按钮上显示字符JButton(Stringtext,Iconicon)/按钮上既显示图标又显示字符,5)单行文本框(JTextField),文本框是AWT的基本组件,文本框是用来在窗口中显示文字的矩形框,这些文字可以被用户编辑。文本框可以用来输入文字、编辑文字、并显示所输入的文字、读取用户输入的文字。文本框分为单行文本框和多行文本框。,构造方法:,JTextField();/创建一个无任何内容的文本框对象JTextField(intcolumns);/指定宽度JTextField(Stringtext);/指定初始化文本JTextField(Stringtext,intcolumns);/即指定宽度又指定文字信息,常用方法:,设置标签显示文本:publicvoidsetText(Stringc)取得标签显示文本:publicStringgetText()字体设置:publicvoidsetFont(Fontf)前景色设置:publicvoidsetForeground(Colorc),6)密码文本框(JPasswordField),密码输入框则只有一种(JPasswordField)。JPasswordField是JTextField的子类,它们的主要区别是JPasswordField不会显示出用户输入的东西,而只会显示出程序员设定的一个固定字符,比如*或者#。,构造方法,JPasswordField();JPasswordField(Documentdoc,Stringtxt,intcolumns)JPasswordField(intcolumns)JPasswordField(Stringtext)JPasswordField(Stringtext,intcolumns),其它方法,chargetPassword()chargetEchoChar()voidsetEchoChar(charc)设置为了隐藏密码而显示的字符,默认为*字符也用getText方法和setText获得或者设置文本内容(当然在用户界面上是隐藏的)。,显示多行文本。构造方法:JTextArea()JTextArea(introws,columns)指定尺寸JTextArea(Stringtext)指定初始化文本JTextArea(Stringtext,introws,intcolumns),7)多行文本框(JTextArea),常用设置方法:publicvoidsetLineWrap(booleanwrap):换行状态设置publicvoidsetRows(introws):设置行数publicvoidsetColumns(intcolumns):设置列数说明:颜色、字体、内容的设置同上(setForeground、setFont、setText),JComboBox每次只能选择其中的一项,但是可编辑每项的内容,而且每项的内容可以是任意类,而不再局限于String。,(8)组合框(JComboBox),作用以下拉列表的方式给出若干选项,提供用户从中选择。下拉列表在单击箭头时才能浏览其中的项目。,构造方法JComboBox():创建一个默认数据项的组合框。JComboBox(Objectitems):创建一个包含指定数组各元素的组合框。,常用方法ObjectgetSelectedItem():返回当前选择项intgetSelectedIndex():返回当前选择项的序数(从0开始)intgetItemCount():返回组合框中的项数。,适用于数量较多的选项以列表形式显示,里面的项目可以由任意类型对象构成。支持单选和多选。,9)列表(JList),作用以多行列表的方式给出若干选项,提供用户从中选择。,构造方法:JList():创建一个内容为空的列表框。JList(Objectitems):创建一个包含指定数组各元素的列表框。,常用方法确定列表框尺寸:voidsetVisibleRowCount(intnum):设置列表可见行数。voidsetFixedCellWidth(intwidth):设置列表框的固定宽度(像素)。voidsetFixedCellHeight(intheight):设置列表框的固定高度。,其它方法BooleanisSelectedIndex(intindex):序数为index的项是否被选中。,复选框提供简单的on/off开关,旁边显示文本标签。,10)复选框(JCheckBox),作用给出若干选项,提供用户选择。复选框有两种状态:选中和未选中。在一组复选框中,同时可以选择多项。,构造方法JCheckBox()无选项文本、无选中JCheckBox(Stringtext)指定选项文本、无选中JCheckBox(Stringtext,booleanselect),常用方法isSelected():可测得复选框是否被选中。,单选框JRadioButton与AWT中的复选框组功能类似。,11)单选框(JRadioButton),作用给出若干选项,提供用户选择其中一项。单选按钮同复选框一样也有两种状态:选中和未选中。多个单选按钮通常组织在一个按钮组中工作,此时只能选择其中一项。,构造方法JRadioButton()无文本、无选中JRadioButton(Stringtext)指定选项文本、无选中JRadioButton(Stringtext,booleanselected)指定选项文本,已选中,常用方法isSelected():可测得单选按钮是否被选中,=TestTextField.java=importjava.awt.*;importjavax.swing.*;publicclassTestTextFieldextendsJFramepublicstaticvoidmain(Stringargs)JFramef=newJFrame(Java程序设计基础);Containerc=f.getContentPane();JPanelp=newJPanel();c.add(p);ImageIconicon=newImageIcon(imageQ1.gif);/创建一个即有文字信息又有图像的标签对象,且图像位置设置在左边显示JLabell=newJLabel(JLabel举例,icon,JLabel.LEFT);/实例化两个文件标签JLabell1=newJLabel(用户名);,例6:请在窗体中添加一个标题标签,一个“用户名”标签,一个“密码”标签,两个单行文本框,长度各为10。,JLabell2=newJLabel(密码);/实例化两个宽度均为10的JTextField对象JTextFieldtf1=newJTextField(10);JTextFieldtf2=newJTextField(10);p.add(l);p.add(l1);p.add(tf1);p.add(l2);p.add(tf2);f.setSize(100,200);f.setVisible(true);,输出结果:,结果聊天室客户端要用的控件如下:,2、确定聊天室客户端界面的布局方式预备知识Java通过布局管理器确定容器中各组件的大小和位置,布局管理器是执行布局管理的特殊的类。Java提供布局管理器类有:FlowLayout,GridLayout,BorderLayout,CardLayout,及GridBagLayout等。布局管理器类是从Object类扩展过来的,并且由java.awt包提供。,FlowLayout(流布局)FlowLayout会将组件按照从左到右,从上到下的方式排列,按加入(add()方法)到容器的顺序布局控件。同时,组件的排列随容器大小的变化而变化,但组件大小保持不变。,构造函数:FlowLayout():/组件位置中心对齐,组件间距为5像素。FlowLayout(intalign):/以指定方式对齐,组件间距为5像素。FlowLayout(FlowLayout.RIGHT,20,40);,GridLayout的规则相当简单,允许用户以行和列指定布局方式,每个单元格的尺寸决定于单元格(主要取决于行数)的数量和容器的大小,组件大小一致。,GridLayout(网格布局),构造函数:GridLayout()GridLayout(introws,intcols)GridLayout(introws,intcols,inthgap,intvgap)其中参数的含义为:rows行,代表任意数量的行cols列,代表任意数量的列hgap组件间水平方向上的空白空间vgap组件间垂直方向上的空白空间,BorderLayout将整个容器的布局划分成东(EAST)、西(WEST)、南(SOUTH)、北(NORTH)、中(CENTER)五个区域,组件只能被添加到指定的区域。如不指定组件的加入部位,则默认加到CENTER区。每个区域只能加入一个组件,如加入多个,则先前加入的会被覆盖。,BorderLayout(边界布局),CardLayout(卡片布局)构造函数为:CardLayout()CardLayout(inthgap,intvgap)其中:hgap和vgap分别为卡片间水平和垂直方向上的空白空间。,常用的方法有:publicvoidfirst(Containerparent)/移到指定容器的第一个卡片publicvoidnext(Containerparent)/移到指定容器的下一个卡片publicvoidprevious(Containerparent)/移到指定容器的前一个卡片publicvoidlast(Containerparent)/移到指定容器的最后一个卡片publicvoidshow(Containerparent,Stringname)/显示指定卡片,importjava.awt.*;importjavax.swing.*;publicclassButtonGridpublicstaticvoidmain(Stringargs)JFramef=newJFrame(GridLayout);f.setLayout(newGridLayout(3,2);/容器平均分成3行2列共6格f.getContentPane().add(newButton(1);/添加到第一行的第一格f.getContentPane().add(newButton(2);/添加到第一行的下一格f.getContentPane().add(newButton(3);/添加到第二行的第一格f.getContentPane().add(newButton(4);/添加到第二行的下一格f.getContentPane().add(newButton(5);/添加到第三行的第一格f.getContentPane().add(newButton(6);/添加到第三行的下一格f.setSize(200,200);f.setVisible(true);,网络布局示例:,运行结果:,2、确定聊天室客户端界面的布局方式结果根据聊天室的各个组件的分布情况,聊天室应采用BorderLayout(边界布局)方式,3、确定每个控件的大小结果,4、确定窗口的大小和位置,setSize()方法利用JFrame的setSize()方法可以设置窗口的大小。设置窗口的大小为宽400像素,高300像素,代码如下:setSize(400,300);,setLocation()方法利用JFrame的setLocation()方法可以设置窗口的位置。将窗口的位置设置为屏幕中央,代码如下:/利用Toolkit工具箱得到屏幕的大小Toolkitkit=Toolkit.getDefaultToolkit();Dimensiondime=kit.getScreenSize();/设置窗口位置setLocation(dime.width-400)/2,(dime.height-300)/2);,5、创建窗口setVisible()方法使用JFrame的setVisible(true)方法将窗口显示出来。,add()方法利用容器组件的add方法可以将组件添加到容器中去。本程序通过下面几步将所有组件添加到容器JFrame中。a)生成上,下两个JPanel面板jp_south=newJPanel();jp_north=newJPanel();,6、将控件加入到窗口中,b)在面板jp_south中放置添加了图片的标签组件jl=newJLabel();IconsentIcon2=newImageIcon(imagetitle.gif);jl.setIcon(sentIcon2);jp_north.add(jl);c)在面板jp_north中放置文本框和按钮组件jp_south.add(jtf_message);jp_south.add(jb_send);d)将上面JPanel面板和文本域组件放置在JFrame窗口容器中getContentPane().add(North,jp_north);getContentPane().add(Center,jta_message);getContentPane().add(South,jp_south);,4.3.3、代码实现:,Client.javapackageorg.javaprogram.client;importjava.awt.*importjavax.swing.*publicclassClientextendsJFrameprivateJTextFieldjtf_message=null;/声明文本框,用于输入消息privateJTextAreajta_message=null;/声明文本区域,用于显示聊天信息privateJButtonjb_send=null;/声明发送按钮privateJPaneljp_south=null;/声明面板,用于放置文本框和发送按钮privateJPaneljp_north=null;/声明面板,用于放置聊天室的LogoprivateJLabeljl=null;/声明标签,用于放置Logo图片,publicClient()/构造方法jtf_message=newJTextField(28);/实例化文本框jta_message=newJTextArea();/实例化文本区域jb_send=newJButton(发送);/实例化发送按钮jp_south=newJPanel();/实例化两个面板jp_north=newJPanel();jp_south.setBackground(newColor(169,212,255);/给面板设置颜色jl=newJLabel();/实例化标签IconsentIcon2=newImageIcon(imagetitle.gif);/声明Icon对象jl.setIcon(sentIcon2);/在标签对象中放置图片,jp_north.add(jl);/将Logo放置到面板(上面)上jp_south.add(j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 门诊承包协议合同范本
- 保利华府购房合同范本
- 青少年成长观察课程合同
- 耕地承包出租合同范本
- 安全生产总承包合同
- 员工餐厅服务合同范本
- 整人收费服务合同范本
- 特种空调采购合同范本
- 温控大棚租赁合同范本
- 简易板房销售合同范本
- 二手房屋买卖物品交接清单
- 技师论文 变频器的维修与保养
- 非标自动化设备项目进度表
- 诊断学教学胸部查体
- 桥梁安全事故案例警示
- YY/T 1095-2015肌电生物反馈仪
- SB/T 10460-2008商用电开水器
- GB/T 9124.1-2019钢制管法兰第1部分:PN系列
- GA 1800.2-2021电力系统治安反恐防范要求第2部分:火力发电企业
- 细胞生物学实验课件:细胞组分的分级分离
- 欣旺集团种禽养殖管理制度手册
评论
0/150
提交评论