ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:428.50KB ,
资源ID:22640082      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22640082.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验308010211李国龙文档格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验308010211李国龙文档格式.docx

1、但是事实上,这三者相互补充,他们满足不同的需求。 抽象窗口工具集为简单的applet程序设计,它不适宜用来构建丰富的桌面图形界面。但是从开始被介绍,它至少有一个好的思想就是布局管理,它负责为组件找到一个放置的位置,这种机制是必需的,因为GUI组件在不同的操作系统中有不同的尺寸。 现在, AWT扩展了组件模型和事件处理机制(由JavaBeans说明定义),新的图形API(称为Java 2D),支持剪贴板和拖拉操作,打印,准入,和新的GUI工具Swing,所有这些都归到Java基础类中(JFC)。它有一套完全的组件从按钮到文件域到表格,树型和文件编辑器。这些组件不依赖于操作系统本地的部件,而是用原

2、始的图形像直线、矩形、文字画出。这种画代表感观插件,它能够模仿本地的感观。 Swing也有平台无关的外观称为Metal。 Swing的结构由MVC模式得到启发,这里在屏幕上的视觉GUI组件和支持数据的模型对象之间有一个明显的分隔,在GUI和数据层之间的通讯基于事件。 首先创建一个聊天程序的界面,然后添加事件,在事件中实现两个私聊和公聊功能,并用JFileChooser实现保存聊天记录的功能。将程序打包为可执行的jar文件参考资料如下:1、JAR 文件包 JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种文档格式。JAR 文件

3、非常类似 ZIP 文件准确的说,它就是 ZIP 文件,所以叫它文件包。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的。举个例子,如果我们具有如下目录结构的一些文件: = - test - Test.class 把它压缩成 ZIP 文件 test.zip,则这个 ZIP 文件的内部目录结构为:test.zip 如果我们使用 JDK 的 jar 命令把它打成 JAR 文件包 test.jar,则这个 JAR 文件的内部目录结构为:test.jar |- META-INF

4、| - MANIFEST.MF -Test.class 2、 创建可执行的 JAR 文件包 制作一个可执行的 JAR 文件包来发布你的程序是 JAR 文件包最典型的用法。Java 程序是由若干个 .class 文件组成的。这些 .class 文件必须根据它们所属的包不同而分级分目录存放;运行前需要把所有用到的包的根目录指定给 CLASSPATH 环境变量或者 java 命令的 -cp 参数;运行时还要到控制台下去使用 java 命令来运行,如果需要直接双击运行必须写 Windows 的批处理文件 (.bat) 或者 Linux 的 Shell 程序。因此,许多人说,Java 是一种方便开发者苦

5、了用户的程序设计语言。其实不然,如果开发者能够制作一个可执行的 JAR 文件包交给用户,那么用户使用起来就方便了。在 Windows 下安装 JRE (Java Runtime Environment) 的时候,安装文件会将 .jar 文件映射给 javaw.exe 打开。那么,对于一个可执行的 JAR 文件包,用户只需要双击它就可以运行程序了,和阅读 .chm 文档一样方便 (.chm 文档默认是由 hh.exe 打开的)。那么,现在的关键,就是如何来创建这个可执行的 JAR 文件包。创建可执行的 JAR 文件包,需要使用带 cvfm 参数的 jar 命令,同样以上述 test 目录为例,命

6、令如下:jar cvfm test.jar manifest.mf test 这里 test.jar 和 manifest.mf 两个文件,分别是对应的参数 f 和 m,其重头戏在 manifest.mf。因为要创建可执行的 JAR 文件包,光靠指定一个 manifest.mf 文件是不够的,因为 MANIFEST 是 JAR 文件包的特征,可执行的 JAR 文件包和不可执行的 JAR 文件包都包含 MANIFEST。关键在于可执行 JAR 文件包的 MANIFEST,其内容包含了 Main-Class 一项。这在 MANIFEST 中书写格式如下:Main-Class: 可执行主类全名(包含

7、包名) 例如,假设上例中的 Test.class 是属于 test 包的,而且是可执行的类 (定义了 public static void main(String) 方法),那么这个 manifest.mf 可以编辑如下: test.Test 这个 manifest.mf 可以放在任何位置,也可以是其它的文件名,只需要有 Main-Class: test.Test 一行,且该行以一个回车符结束即可。创建了 manifest.mf 文件之后,我们的目录结构变为:|- test | - Test.class - manifest.mf 这时候,需要到 test 目录的上级目录中去使用 jar 命令

8、来创建 JAR 文件包。也就是在目录树中使用“=”表示的那个目录中,使用如下命令:之后在“=”目录中创建了 test.jar,这个 test.jar 就是执行的 JAR 文件包。运行时只需要使用 java -jar test.jar 命令即可。需要注意的是,创建的 JAR 文件包中需要包含完整的、与 Java 程序的包结构对应的目录结构,就像上例一样。而 Main-Class 指定的类,也必须是完整的、包含包路径的类名,如上例的 test.Test;而且在没有打成 JAR 文件包之前可以使用 java 来运行这个类,即在上例中 java test.Test 是可以正确运行的 (当然要在 CLA

9、SSPATH 正确的情况下)。 把本实验的程序使用jar工具打包成可执行的jar文件。三、 问题步骤注解:代码的注释在工程文件中,这里只有简单说明。1. 创建一个聊天程序的界面。我使用的是WindowBuilder插件。首先创建项目,和平时不同,这次的步骤是:File-New-Other得到如下界面:选择JFrame创建一个类。选择Design来画界面。界面的画法很简单,只需要放组件就可以了,不再一一演示了,使用到的组件对应的代码以及解释如下:/* * 添加菜单条 */ JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); * 添加F

10、ile菜单 JMenu mnFile = new JMenu(File); menuBar.add(mnFile); * File菜单下添加子菜单:Save,单击Save键将调用saveActionPerformed(e) * 函数,保存聊天内容 JMenuItem mntmNewMenuItem = new JMenuItem(Save mntmNewMenuItem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) saveActionPerformed(e); );mnFil

11、e.add(mntmNewMenuItem); /*Exit,单击Exit键将调用exitActionPerformed(e) * 函数,进入是否退出系统的操作 JMenuItem mntmExit = new JMenuItem(Exit mntmExit.addActionListener(new ActionListener() exitActionPerformed(e);mnFile.add(mntmExit); * 添加Action菜单 JMenu mnAction = new JMenu(Action menuBar.add(mnAction); * 以下几段是放置公聊,私聊面板

12、的,而且设置为不可编辑的 publicScrollPane = new JScrollPane(); textTabbedPane.addTab(Public, null, publicScrollPane, null); publicTextPane = new JTextPane(); publicTextPane.setEditable(false); publicScrollPane.setViewportView(publicTextPane); privateScrollPane = new JScrollPane();Private, null, privateScrollPan

13、e, null); privateTextPane = new JTextPane(); privateTextPane.setEditable(false);privateScrollPane.setViewportView(privateTextPane); * 添加标签:Send To JLabel userLabel = new JLabel(Send To userLabel.setFont(new Font(楷体, Font.PLAIN, 16);Message: JLabel messageLable = new JLabel(messageLable.setFont(new F

14、ont( * 添加文本输入框用来输入聊天信息 messageText = new JTextField(); messageText.setColumns(10); * 添加发送消息的Send按钮,点击Send会调用sendActionPerformed(e) * 函数来发送消息,显示到对应的区域 sendButton = new JButton(Send sendButton.addActionListener(new ActionListener() sendActionPerformed(e);sendButton.setFont(new Font( * 添加组合框,组合框第一行是:选择

15、一个在线好友,它其实对应的是公聊, * 还没有选择一个人私聊,这里模拟的是ClientA和ClientB聊天,当 * 使用者是ClientA时,组合框的第二行和第三行为ClientB和ClientC, * 当使用者是ClientB时,组合框的第二行和第三行为ClientA和ClientC, userComboBox = new JComboBox(); userComboBox.addItem(选择一个在线好友 if(mySelf.equals(ClientA) userComboBox.addItem(ClientB else if(mySelf.equals( userComboBox.a

16、ddItem(ClientC最终得到的界面为:2. 添加事件实现公聊,私聊功能。这里主要是实现Send功能。流程就是读取输入文本框中的内容,根据组合框中选择的项决定是公聊还是和某人私聊,然后点击Send,则内容显示到公聊窗口或者私聊窗口,另一个人的对应窗口也会显示相应的聊天消息。Send的实现如下: * 发送消息的函数,它实现了两个窗口的通讯 */ private void sendActionPerformed(ActionEvent evt) /将输入文本框的内容赋给字符串message String message=this.messageText.getText(); /得到当前组合框

17、的索引值,0代表第一项,1代表第二项,2代表第三项 int index=this.userComboBox.getSelectedIndex(); * index为0代表公聊 if(index=0) /切换到公聊窗口 textTabbedPane.setSelectedIndex(0); /* * 初始时flag0为true,聊天板上为空,输入第一条消息后聊天板不为空, * 则flag0设为false */ if(flag0) flag0=false; publicTextPane.setText(我:+message); /* * 根据发送消息的人是谁,设置另一个人的对应窗口显示的内容为Cl

18、ient*:+ * 消息内容的形式 */ if(mySelf.equals( frame2.textTabbedPane.setSelectedIndex(0); frame2.publicTextPane.setText(ClientA: else if(mySelf.equals( frame.textTabbedPane.setSelectedIndex(0); frame.publicTextPane.setText(ClientB: * flag0为false则面板不为空,则采用获取原来内容+新内容再放置到面板上的方式 else publicTextPane.setText(publ

19、icTextPane.getText()+n+ frame2.publicTextPane.setText(frame2.publicTextPane.getText()+ frame.publicTextPane.setText(frame.publicTextPane.getText()+ * index为1代表私聊,私聊对象为ClientA或ClientB else if(index=1) /切换到私聊窗口 textTabbedPane.setSelectedIndex(1); * 初始时flag1为true,聊天板上为空,输入第一条消息后聊天板不为空, * 则flag1设为false

20、if(flag1) flag1=false; privateTextPane.setText(我对+userComboBox.getSelectedItem()+说: * 根据发送消息的人是谁,设置另一个人的对应窗口显示的内容为Client*对我说: frame2.textTabbedPane.setSelectedIndex(1); frame2.privateTextPane.setText(ClientA对我说: frame.textTabbedPane.setSelectedIndex(1); frame.privateTextPane.setText(ClientB对我说: * fl

21、ag1为false则面板不为空,则采用获取原来内容+新内容再放置到面板上的方式 privateTextPane.setText(privateTextPane.getText()+ frame2.privateTextPane.setText(frame2.privateTextPane.getText()+ frame.privateTextPane.setText(frame.privateTextPane.getText()+ * index为2代表和ClientC私聊,因为内容和ClientB,ClientA二人聊天 * 一致,所以不再多写了 else if(index=2) 演示一下

22、发消息:公聊:私聊:3. 将“公聊”及“私聊”的聊天内容保存为文件以及退出系统。保存到文件就是利用JFileChooser来打开文件选择框,然后利用文件的写操作将聊天内容写入文件中。代码如下: * 保存聊天内容的函数 private void saveActionPerformed(ActionEvent evt) /将公聊内容赋给字符串ss String ss = this.publicTextPane.getText(); /将私聊内容赋给字符串ss2 String ss2= this.privateTextPane.getText(); /创建文件选择框 JFileChooser jfc

23、 = new JFileChooser(); * 打开文件选择框进行保存文件操作 if(JFileChooser.APPROVE_OPTION = jfc.showSaveDialog(this) /要保存的文件 File saveFile = jfc.getSelectedFile(); try /文件不存在则创建 if(!saveFile.exists() saveFile.createNewFile(); BufferedWriter bw = new BufferedWriter(new FileWriter(saveFile); /按换行符分割字符串ss,使得聊天内容写入文件看起来清楚 S

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1