用java编写打开摄像头程序

用java编写打开摄像头程序
用java编写打开摄像头程序

用java编写打开摄像头程序

一、下载、安装jmf2.1.1

下载地址:

https://www.360docs.net/doc/322449847.html,/webapps/download/Redirect/30977658/58474793772828 0705350560724608606933322893863359466947722807053505763202594 105280732152819601360132859339008063305596058473206-5761/jmf-2_ 1_1c-windows-i586.exe

https://www.360docs.net/doc/322449847.html,/products/java-media/jmf/2.1.1/

二、了解jmf编程

查看jmf教程资料,网上很多。

(一)J MF的结构

为了更好地说明JMF的结构,让我们用立体声音响做一个简单的比喻。

当你CD机播放CD唱片的时候,CD唱片向系统提供音乐信号。这些数据是在录音棚中用麦克风和其他类似的设备记录下来的。CD播放机将音乐信号传送到系统的音箱上。在这个例子中,麦克风就是一个音频截取设备,CD 唱片是数据源,而音箱是输出设备。

JMF的结构和立体声音响系统非常相似,在后面的文章中,你会遇到下面的这些术语:

●数据源(Data source)

●截取设备(Capture Device,包括视频和音频截取设备)

●播放器(Player)

●处理器(Processor)

●数据格式(Format)

●管理器(Manager)

(二)J MF详解

1.数据源

就像CD中保存了歌曲一样,数据源中包含了媒体数据流。在JMF中,DataSource对象就是数据源,它可以是一个多媒体文件,也可以是从互联网上下载的数据流。对于DataSource对象,一旦你确定了它的位置和类型,对象中就包含了多媒体的位置信息和能够播放该多媒体的软件信息。当创建了DataSource对象后,可以将它送入Player对象中,而Player对象不需要关心DataSource中的多媒体是如何获得的,以及格式是什么。

在某些情况下,你需要将多个数据源合并成一个数据源。例如当你在制作一段录像时,你需要将音频数据源和视频数据源合并在一起。JMF支持数据源合并,在后面的例子中我们将提到这一点。

2.截取设备

截取设备指的是可以截取到音频或视频数据的硬件,如麦克风、摄像机等。截取到的数据可以被送入Player对象中进行处理。

3.播放器

在JMF中对应播放器的接口是Player。Player对象将音频/视频数据流作为输入,然后将数据流输出到音箱或屏幕上,就像CD播放机读取CD唱片中的歌曲,然后将信号送到音箱上一样。Player对象有多种状态,JMF中定义了JMF的六种状态,在正常情况下Player对象需要经历每个状态,然后才能播放多媒体。下面是对这些状态的说明。

● Unrealized:在这种状态下,Player对象已经被实例化,但是并不知道它需要播放的多媒体的任何信息。

● Realizing:当调用realize()方法时,Player对象的状态从Unrealized 转变为Realizing。在这种状态下,Player对象正在确定它需要占用哪些资源。

● Realized:在这种状态下Player对象已经确定了它需要哪些资源,并且也知道需要播放的多媒体的类型。

●Prefetching:当调用prefectch()方法时,Player对象的状态从Realized变为Prefetching。在该状态下的Player对象正在为播放多媒体做一些准备工作,其中包括加载多媒体数据,获得需要独占的资源等。这个过程被称为预取(Prefetch)。

● Prefetched:当Player对象完成了预取操作后就到达了该状态。

●Started:当调用start()方法后,Player对象就进入了该状态并播

放多媒体。

4.处理器

处理器对应的接口是Processor,它一种播放器。在JMF API中,Processor接口继承了Player接口。Processor对象除了支持支持Player对象支持的所有功能,还可以控制对于输入的多媒体数据流进行何种处理以及通过数据源向其他的Player对象或Processor对象输出数据。

除了在播放器中提到了六种状态外,Processor 对象还包括两种新的状态,这两种状态是在Unrealized状态之后,但是在Realizing状态之前。

● Configuring:当调用configure()方法后,Processor对象进入该状态。在该状态下,Processor对象连接到数据源并获取输入数据的格式信息。

●Configured:当完成数据源连接,获得输入数据格式的信息后,Processor对象就处于Configured状态。

5.数据格式

Format对象中保存了多媒体的格式信息。该对象中本身没有记录多媒体编码的相关信息,但是它保存了编码的名称。Format的子类包括AudioFormat和VideoFormat类,ViedeoFomat又有六个子类:H261Format、H263Format、IndexedColorFormat、JPEGFormat、RGBFormat和YUVFormat类。

6.管理器

JMF提供了下面四种管理器:

●Manager:Manager相当于两个类之间的接口。例如当你需要播放一个DataSource对象,你可以通过使用Manager对象创建一个Player对象来播放它。使用Manager对象可以创建Player、Processor、DataSource 和DataSink对象。

● PackageManager:该管理器中保存了JMF类注册信息。

● CaptureDeviceManager:该管理器中保存了截取设备的注册信息。

● PlugInManager:该管理器中保存了JMF插件的注册信息。(三)创建一个Player对象

在JMF编程中,最常见的工作就是创建一个Player对象。你可以通过Manager类的createPlayer()方法创建Player对象。Manager对象使用多媒体的URL或MediaLocator对象来创建Player对象。当你获得了一个Player对象后,你可以通过调用getVisualComponent()方法得到Player 对象的图像部件(Visual Component,在图像部件上可以播放多媒体的图像)。然后将图像部件加入到应用程序或Applet的界面上。Player对象还包含一个控制面板,在上面可以控制媒体的播放、停止和暂停等。

Player类中的很多方法只有在Player对象处于Realized的状态下才会被调用。为了保证Player对象已经到达了该状态,你需要使用Manager的createRealizePlayer()方法来获得Player对象。但是对于start()方法来说,你可以在Player对象到达Prefetched状态之前调用它,它可以自动将Player的状态转换到Started状态。

(四)截取多媒体数据

多媒体数据的截取是JMF程序中另一个非常重要的功能。你可以按照下面的步骤截取数据:

●通过查询CaptureDevieceManager获得你希望使用的截取设备。

●获得设备对应的CaptureDeviceInfo对象。

●从CaptureDeviecInfo对象中获得MediaLocator对象,然后用它创建一个DataSource对象。

●使用DataSource对象创建Player对象或Processor对象。

●调用start()方法,开始截取多媒体数据。

你可以使用CaptureDeviceManager对象获得系统中可用的视频和音频截取设备。通过调用getDeviceList()方法你可以获得设备的列表。每个设备都对应一个CaptrueDeviceInfo对象。也可以通过调用CaptureDevieceManager对象的getDevice()方法来获得特定的CaptureDeviceInfo对象。在使用设备截取多媒体数据前,还需要从CaptureDeviceInfo对象中获得设备对应的MediaLocator对象。然后你可以直接使用MediaLocator来构造Player或Processor的实例,也可以用

MediaLocator构造一个DataSource对象,然后将DataSource对象送入Player或Processor对象中。最后调用start()方法来截取多媒体数据。

三、导入库

构建路径中“添加外部”导入安装的jmf的lib 里的jmf.jar 库。

四、编写程序

代码如下:

import java.awt.BorderLayout;

import https://www.360docs.net/doc/322449847.html,ponent;

import java.awt.EventQueue;

import java.util.Vector;

import javax.media.CaptureDeviceInfo;

import javax.media.CaptureDeviceManager;

import javax.media.Manager;

import javax.media.MediaLocator;

import javax.media.Player;

import javax.media.Processor;

import javax.media.control.FrameGrabbingControl;

import javax.media.format.AudioFormat;

import javax.media.format.VideoFormat;

import javax.media.protocol.DataSource;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.border.EmptyBorder;

public class TextWindow extends JFrame {

static TextWindow frame ;

private JPanel contentPane,p3,p4;

private JPanel panel ;

public CaptureDeviceInfo device2;

public Player player2;

Component comV, comVC, comA;

public static Player player = null;

private CaptureDeviceInfo device = null;

private MediaLocator locator = null;

static String str1 = "vfw:Logitech USB Video Camera:0";

static String str = " vfw:Microsoft WDM Image Capture (Win32):0";

static String aa="JavaSound audio capture";//音频

static String bb="DirectSoundCapture";

/**

* Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

frame = new TextWindow();

frame.setVisible(true);

frame.speaker();

frame.jbInit();

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

private void speaker() throws Exception {

p3=new JPanel();

p3.setLayout(new BorderLayout(0, 0));

Vector deviceList = CaptureDeviceManager.getDeviceList(new AudioFormat(AudioFormat.LINEAR, 44100, 16, 2));

if (deviceList.size() > 0) {

device2 = (CaptureDeviceInfo) deviceList.firstElement();

} else {

System.out.println("找不到音频设备!");

}

try {

player2 = Manager.createRealizedPlayer(device2.getLocator());

player2.start();

if ((comA = player2.getControlPanelComponent()) != null) { p3.add(comA,"Center");

}

} catch (Exception e) {

e.printStackTrace();

}

contentPane.add(p3,"South");

}

private void jbInit() throws Exception {

// 初始化设备,str为设备驱动

p4=new JPanel();

p4.setLayout(new BorderLayout(0, 0));

p4.setOpaque(false);

device=CaptureDeviceManager.getDevice(str);

MediaLocator locatorss = new MediaLocator("vfw://0");

player=Manager.createRealizedPlayer(locatorss);

Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, new Boolean(true));

// player.addControllerListener(new PlayerEventHandler()); // 增添播放节制

player.start();

comV = player.getVisualComponent();//获取播放器显示组件FrameGrabbingControl fgc =(FrameGrabbingControl)

player.getControl( "javax.media.control.FrameGrabbingControl ");

if ((comV ) != null)

{

p4.add(comV, "Center");

}

p4.setVisible(true);

contentPane.add(p4,"Center");

}

/**

* Create the frame.

*/

public TextWindow() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 450, 300);

contentPane = new JPanel();

contentPane.setOpaque(false);

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

contentPane.setLayout(new BorderLayout(0, 0));

}

}

五、运行结果

六、总结

Java多媒体框架是一个很好的多媒体编程工具。在这篇文章中我只是简单介绍了JMF的一些基本功能。如果有兴趣的话可以仔细阅读一下Sun公司的Java网站上提供的JMStudio的例子。在JMStudio中不仅实现了简单的播放和视频/音频截取功能,还实现了从互联网下载和向互联网上传多媒体数据流的功能。而且它还包含了JMFRegistry的源代码,将相应的代码移植到你的应用程序中后,你就不需要在运行程序前运行JMFRegistry来向JMF注册设备了。

JAVA代码编写一简单网络聊天程序

要求:聊天室服务器、聊天室客户端;客户端之间可以聊天。 因为我是初级选手,想借此程序分析学习java,所以代码最好多一点注释... 分数有限,望大家不吝赐教!!问题补充: 需要图形用户界面哦,最好用swing组件 服务器端:采用多线程,可以向客户广播:当前聊天室人数,客户名称列表,客户进入离开提示; 客户端:可以设定昵称,性别,客户间可以私聊 服务器端: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import https://www.360docs.net/doc/322449847.html,.*; public class Server extends JFrame implements ActionListener{ JPanel contentPane; JLabel jLabel2 = new JLabel(); JTextField jTextField2 = new JTextField("4700"); JButton jButton1 = new JButton(); JLabel jLabel3 = new JLabel(); JTextField jTextField3 = new JTextField(); JButton jButton2 = new JButton(); JScrollPane jScrollPane1 = new JScrollPane(); JTextArea jTextArea1 = new JTextArea(); ServerSocket server = null; Socket socket = null;BufferedReader instr =null;PrintWriter os=null ; //Construct the frame public Server() { jbInit(); } class MyThread extends Thread{//该线程负责接受数据 public void run(){ try{ while(true){ this.sleep(100); instr= new BufferedReader(new InputStreamReader(socket.getInputStream())); if(instr.ready()){ //检查是否有数据 jTextArea1.append("客户端: "+instr.readLine()+"\n"); } } }catch(Exception ex){} }

java简单聊天小程序

网络编程java简单聊天小程序[下次修改成多线程的,这个必须等待对方输入结束,有机会修改成可视化窗口] By 刘汪洋 写入正确的ip地址即可正常用当然目前只停留在命令行界面 还没有写成可视化窗口界面 运行时请带上参数 如java TransServer 张三 Java TransClient 李四 ( 和刘正南在局域网试验的截图成功 这是修改后的 加上了姓名! ) (修改前的截图)

代码: 客户端: package com.baidu.chat; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import https://www.360docs.net/doc/322449847.html,.Socket; import https://www.360docs.net/doc/322449847.html,.UnknownHostException; // 简单聊天小程序客户端 public class TransClient { public static void main(String[] args)

{ if(args[0]==null) args[0] = "他"; startClient(args[0]); } private static void startClient(String name) { Socket sk = null; BufferedReader bufr = null; try { sk = new Socket("127.0.0.1",10000);// 1 创建 socket服务 bufr = new BufferedReader(new InputStreamReader(System.in));// 2 获取录入键盘 PrintWriter out = new PrintWriter(sk.getOutputStream(),true);// 3 获取输出流true表示自动刷新 BufferedReader bufIn = new BufferedReader(new InputStreamReader(sk.getInputStream()));// 4 获取输入流 // 5 发送获取 String text_send = ""; String text_get = ""; String ServerName = ""; System.out.print("聊天已开启..."+"\r\n"+"我说:");

java版基于UDP协议网上聊天程序课程设计

湖南工业大学 课程设计 资料袋 计算机与通信学院学院(系、部)2013 ~ 2014 学年第 1 学期课程名称网络协议分析指导教师李建设职称副教授 学生姓名专业班级网络工程学号 题目基于UDP协议网上聊天程序 成绩起止日期2013 年11 月25 日~2013 年12 月13 日 目录清单

5 6 课程设计任务书 2013 —2014学年第1 学期 学院(系、部)计算机与通信学院专业网络工程班级102 课程名称:网络工程学生姓名: 设计题目:基于UDP协议网上聊天程序指导教师:李建设 完成期限:自2013 年11 月25 日至2013 年12 月13 日共 3 周 容 及 任 务 一、设计内容 实现一个基于UDP协议的简单的聊天程序,包括服务器和客户端。 1.支持多人聊天。 2.客户端具有图形化用户界面。 二、设计任务 课程设计说明书(纸质+电子版),内容包括:设计内容、系统分析(包括可行性分析、需求分析等)及功能分析;系统设计(要求画出系统整体功能框图、流程图、并给出相应地关键的代码且对所使用的主要数据结构进行说明等。)、设计总结(评价/遇到的问题/体会/建议等)、使用说明等。 三、设计要求 1.按功能要求开发系统,能正确运行。程序代码书写规范,有充足的注释。 2.课程设计所使用的编程语言任选,但建议使用C或C++; 3.绿色软件:程序运行不需安装,避免写系统和注册表; 进 度 安 排 起止日期工作内容 2013-11-25~2013-11-3 选题 2013-12-1~2013-12-3 系统分析和设计; 2013-12-4~2013-12-8 熟悉软件开发工具、编码系统、系统测试 2013-12-9~2013-12-13 撰写并提交课程设计说明书(含电子文档)、源程序等。

Java编写的扫雷小程序

J a v a编写的扫雷小程序Prepared on 21 November 2021

整个程序使用了4个类: Game 用于启动程序, 界面的布置,各种行列的算法。 ExtendButton 继承了Jbutton 用于新建button的各种属性 ShowNum 监听到某个button后,计算出此button周围有几个雷,不同的雷对应不通的图片,类得到button上应加载的图片地址 ViewReSet 此类用于新建一个窗口,用户输入自己想要的行、列、雷数,然后用新的行列雷数new 一个新的Game biaose dise1 dise2 dise3 dise4 dise5 dise6 dise7 dise8 dise lei biaoji

/**************************************************************** 运行类创建游戏主窗体 */ package class Game extends JFrame implements ActionListener{ private Container myContainer; private GridLayout myLayout; private JPanel myPanelMain; private JPanel myPanel; private JToolBar myTool; private JLabel time; private JLabel labelTime; private JLabel bombNum; private JLabel labelBombNum; private JMenuBar menuBar; private JMenu menuE, menuH; private JMenuItem menuItemCZ, menuItemSZ; private int numBomb, countTime, leaveBomb, numEnd; private int myRows, myColumns; private int xis, yis; private Timer timer; private ExtendButton[] myButton = null; etPostion(i); [i].setIcon((new ShowNum(10)).getImageIcon()); [i].setButton_num(0); [i].SetVisited(false); [i].SetStatus(false); ddMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { if (() == ) {

java编写的简单局域网聊天室(适合初学者).

import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Frame; import java.awt.Panel; import java.awt.Point; import java.awt.TextArea; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.io.FileWriter; import java.io.IOException; import https://www.360docs.net/doc/322449847.html,.DatagramPacket; import https://www.360docs.net/doc/322449847.html,.DatagramSocket; import https://www.360docs.net/doc/322449847.html,.InetAddress; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class GUI_Chat extends Frame { private static final long serialVersionUID = 1L; private TextArea viewTextArea = new TextArea(20, 1; private TextArea sendTextArea = new TextArea(; private TextField ipTextField = new TextField(20; private Button sendButton = new Button(" 发送" ; private Button clearButton = new Button(" 清屏" ; private Button logButton = new Button(" 记录" ; private Button shakeButton = new Button(" 震动" ; private Panel panel = new Panel(; private DatagramSocket socket ;

java课程设计聊天小程序

java课程设计聊天小程序

课程设计指导书 姓名学 号 班 级 一 班 课程名称Java课程设计课程性质 设计时间2010年11月4日——2010年12月31日设计名称聊天小程序 设计目的本次课程设计是对前面学过的面向对象的编程思想以及编程方法的一个总结、回顾和实践。开始设计前学生一定要先回顾以前所学的内容,明确本次设计所要用到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。通过编写一个基于JA V A的应用系统综合实例,来掌握Java语言编程技巧。 设计要求1、使用图形用户界面。 2、能实现一个聊天室中多人聊天。 3、可以两人私聊。

计划与进度计划在两个月内完成任务,首先在前半个月内(11月4日--11月19日),构思通过网上(图书馆)的知识与课本上的相关内容的了解与认识,确认好选择的课题与怎样设计,基本的思路想好。十五天(11月19日--12月5日)内参考资料争取完成服务端的程序,在12月5日--12月20日完成客户端的程序设计,在12月20日—12月30日内完成实现报告的填写工作。在12月31日全面完成整个课题,并上交给老师。 任课教师意见备注

课程设计报告 课程: 学号: 姓名: 班级 教师: 时间

计算机科学与技术 设计名称:聊天小程序日期:2010 年 11月 4 日 设计内容:设计一个在图形界面下,实现一个聊天室中多人聊天,也可以私聊的聊天小程序 设计目的与要求:目的是为了更好的掌握java 这门课程的内容,同时更好的理解与掌握socket 编程,对所有面向对象的编程思想以及编程方法的一个总结、回顾和实践,掌握Java语言编程技巧。要求使用图形用户界面。能实现一个聊天室中多人聊天。可以两人私聊。(提示:使用socket通信)程序描述清晰准确,思路清晰,程序能够实现相应的功能。

若干个经典的Java小程序源代码

一个Java小程序源代码(反转字符串)//BorderLayoutTest.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; public class test1 { public static void main(String[] args) { cloneFrame frame = new cloneFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); } } class cloneFrame extends JFrame { public cloneFrame() {

setTitle("机试程序"); setSize(600, 400); JPanel buttonPanel = new JPanel(); buttonPanel.setBackground(new Color(56,43,85)); Button1 = new JButton("点击复制反转字符串"); Button1.addActionListener(new turnListener()); buttonPanel.add(Button1); JPanel textPanel = new JPanel(); textPanel.setBackground(new Color(100,100,100)); field1 = new JTextField("姓名:老孙;学号:2004132028", 20); field2 = new JTextField("反转", 20); field2.setEditable(false); textPanel.add(field1); textPanel.add(field2); JPanel tuPanel = new JPanel();

java小程序设计

课程设计报告 设计题目:用Java编的计算器 院系 班级 设计者 学号 指导教师 设计时间

前言: 通过上课学习了java程序设计的基本原理和模式,这次又以java语言为基本结合其图形应用界面来设计一个包括加、减、乘、除。还有带括号以及带负号、小数运算的计算程序。 系统功能和使用说明: 一.硬件环境: 本系统适用于现应用各种类型的计算机,内存容量为128MB以上,不必配备的外部附加设备。二.软件环境: 本系统的设计采用的是JAVA语言,应在JDK 5.0或者其更高版软件环境下本使用。 三.系统流程图: 1.下图是本程序的运行后的界面,其标注是此组件在程序中的名字 2.系统流程图中各个模块的功能说明: 本程序一共包括:构造方法A5i13w(),setup(), windowClosing(), actionPerformed(), appendchar(), countall(), counting(), Iscountnum()和一个windowcloser类。 (1). A5i13w()是构造方法,在程序创建其对象时就调用,初始化次程序的事件的监听机制。 (2). setup()是我定义的方法,是用来初始化程序的图形应用界面,由A5i13w()来调用。 (3). windowClosing()是用来响应用户的关闭功能。 (4). actionPerformed()是用来处理每个事件的响应的方法 (5). appendchar()方法的作用是在用户产生事件后向Textshow追加产生此事件的字符串 (6).countall()的意义是在用户按“=”号后,从最里层括号向最外层逐层把括号里的内容传递给counting()方法,并负责对括号本身是否符合数学语法要求进行检验。 (7).counting()方法的作用是首先对无括号的数学表达式有关的数学计算符号进行调整,并检验所有的数学符号,如发现错误的数学符号立即在Labelnow中显示出来。

JAVA课程设计--简单的网络聊天程序

本科课程设计课程设计题目:简单的网络聊天程序

课程设计报告1.设计目的:

序言 1.1 背景 在当今的信息时代,越来越多的聊天工具被应用,Java语言是当今流行的网络编程语言,它具有面向对象、与平台无关、安全、多线程等特点。使用Java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的、嵌入式设备进行应用程序的开发。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼我们熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。 此次课程设计的题目为简单的聊天室,通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。 1.2 相关技术 CPU:Pentium 2.8GHz以上 内存:256MB以上 硬盘空间:80G以上 操作系统:Windows7 运行环境:eclips

2. 程序设计与实现 2.1需求分析 Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。Java去掉了C++语言的许多功能,如:指针运算、结构、typedefs、#define,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。这将减少平常出错的50%。而且,Java很小,整个解释器只需215K的RAM。 因此运用JAVA程序编写聊天室,实现简单聊天功能。本次课程设计做的是Java简单聊天室,它是图形界面、线程、流与文件等技术的综合应用,其界面主要采用了java.awt包,javax.swing包等。程序实现了聊天室的基本功能,其中有: (1)启动服务器:实现网络的连接,为注册进入聊天室做准备。 (2)启动客户端:实现网络的链接,可以进行正式的聊天 (3)发送信息:为用户发送信息提供平台。 (4)离开界面:使用户退出聊天室。 (5)关闭服务器:断开与网络的连接,彻底退出聊天室。

Java图形用户界面编程练习

实验八Java图形用户界面编程练习 实验目的 1、掌握 Java 的 GUI 设计技术 2、掌握 AWT 和 Swing 的应用技巧 实验要求 1、编写一个程序学习使用处理ActiongEvent事件 2、编写一个程序学习使用布局类 实验内容 1.猜数字游戏 实验目的:练习图形用户界面编程,学习处理ActionEvent事件。 实用要求: 要求程序中要有2个按钮buttonGetNumber和buttonNumber,用户单击buttonGetNumber 按钮可以得到一个随机数,然后在文本框中输入猜测数字,再单击buttonNumber按钮,程序根据用户的猜测给出提示信息。 运行效果示例: 程序模板:按模板要求,将【代码】替换为Java程序代码。 GuessExample.java import java.awt.*;

import java.awt.event.*; import java.applet.*; public class GuessExample extends Applet implements ActionListener { int number; TextField inputNumber; Label feedBack; Button buttonGetNumber,buttonEnter; public void init() { buttonGetNumber=new Button("得到一个随机数"); feedBack=new Label ("无反馈信息",Label.CENTER); feedBack.setBackground(Color.green); inputNumber=new TextField("0",5); buttonEnter=new Button("确定"); 【代码1】//按钮buttonEnter增加ActionEvent事件监视器,监视器为当前Java Applet。 【代码2】//按钮buttonGetNumber增加ActionEvent事件监视器,监视器为当前Java Applet。 add(new Label("获取1-100之间的随机数:")); add(buttonGetNumber); add(new Label("输入您的猜测:")); add(inputNumber); add(new Label("单击确定按钮:")); add(buttonEnter); add(new Label("反馈信息:")); add(feedBack); } public void actionPerformed(ActionEvent e) { if(【代码3】) //判断事件源是否是buttonGetNumber。 { number=(int)(Math.random()*100)+1; } else if(【代码4】) //判断事件源是否是buttonEnter。 { int guess=0; try { guess=Integer.parseInt(【代码5】); //返回inputNumber中的文本。 if(guess==number) { 【代码6】//feedBack设置提示文本:"猜对了!"。 }

利用JAVA实现简单聊天室

利用JAVA实现简单聊天室 1.设计思路 Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。而且,Java 很小,整个解释器只需215K的RAM。 因此运用JAVA程序编写聊天室,实现简单聊天功能。程序实现了聊天室的基本功能,其中有: (1)启动服务器:实现网络的连接,为注册进入聊天室做准备。 (2)注册登陆界面:填写基本信息如姓名等,可以供多人进入实现多人聊天功能。 (3)发送信息:为用户发送信息提供平台。 (4)离开界面:使用户退出聊天室。 (5)关闭服务器:断开与网络的连接,彻底退出聊天室。 2.设计方法 在设计简单聊天室时,需要编写5个Java源文件:Server.java、Objecting.java、LogIn.java、ClientUser.java、Client.java。 3 程序功能图及程序相关说明 (1)主功能框图

(2) 聊天室基本功能表 4.程序代码是说明 程序中引入的包: package Chat; import https://www.360docs.net/doc/322449847.html,.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*;

import java.io.*; (1)服务器端代码中用户自定义类: 类名:Server 作用:服务器启动 继承的接口名:ActionListener public class Server implements ActionListener{ 定义的对象: count //记录点机关闭按钮次数2次关闭 soconly //只有SOCKET,用于群发 sockets//所有客户的SOCKET socket_thread //Socket所在的线乘,用于退出;frame // 定义主窗体 panel //定义面板 start,stop //启动和停止按钮 主要成员方法: public void center //定义小程序查看器的位置 public void actionPerformed //定义处理异常机制 定义子类:serverRun,Details 继承的父类名:Thread class serverRun extends Thread //启线乘用于接收连入的Socket class Details extends Thread //具体处理消息的线乘,只管发送消息创建一个ServerSocket 对象,用于接受指定端口客户端的信息 ServerSocket server = new ServerSocket("1234"); 接受请求时候,通过accept()方法,得到一个socket对象。 Socket socket = server.accept(); 通过socket创建流(输入,输出)。 BufferedReaderbr=newBufferedReader(newInputStreamReader (socket.getInputStream())) DataInputStream dis = new DataInputStream(socket.getInputStream());

java简单图形用户界面代码

package dsr; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import https://www.360docs.net/doc/322449847.html,.Socket; public class Login extends JFrame implements ActionListener{ //定义组件 JPanel northPanel,southPanel,centerPanel,centerPanel1,centerPanel11,centerPanel12; JButton loginBtn,registerBtn,cancalBtn; JLabel userLbl,passwordLbl,titleLbl; JTextField userTxt; JPasswordField passwordPwd; static String name; public Login () { super("用户登录"); northPanel=new JPanel(); southPanel=new JPanel(); centerPanel1=new JPanel(); centerPanel11=new JPanel(); centerPanel12=new JPanel(); //标题 titleLbl=new JLabel("欢迎进入考试系统"); titleLbl.setFont(new Font("隶书",Font.BOLD,24)); northPanel.add(titleLbl); this.add(northPanel,BorderLayout.NORTH); //中间部分 centerPanel1.setLayout(new BorderLayout()); userLbl=new JLabel("用户名"); userTxt=new JTextField(12); centerPanel11.add(userLbl); centerPanel11.add(userTxt); centerPanel1.add(centerPanel11,BorderLayout.NORTH); passwordLbl=new JLabel("密码"); passwordPwd=new JPasswordField(12); centerPanel12.add(passwordLbl); centerPanel12.add(passwordPwd);

《Java聊天程序的设计与实现》

本科生毕业论文(设计)系(院)计算机科学学院专业计算机科学与技术 论文题目Java聊天程序的设计与实现 学生姓名车永华 指导教师苏炳均(副教授) (姓名及职称) 班级08级ACCP2班 学号08339311 完成日期:二0一一年十一月

Java聊天程序的设计与实现 车永华 计算机科学学院计算机科学与技术08339311 [摘要]:随着信息时代的来临,人们之间的交流也越来越趋向于网络。因此各种聊天工具的使用也是非常频繁,如MSN、QQ之类的聊天工具也被广泛使用。本文在研究局域网通信机制的原理和计算机网络编程基本原理的基础上,使用Java作为开发工具,开发出了一款在局域网中进行通信交流的软件。 [关键字]:Java 服务器端客户端数据传输 引言 当今主流的聊天工具有QQ,MSN,网易泡泡等,国内最热门的聊天工具当属腾讯QQ,是由深圳市腾讯计算机系统公司开发的,基于Internet的即时寻呼软件。你可以通过QQ和你的亲朋好友进行交流,即时收发消息,文件传输,语音视频,发送邮件等功能,QQ不仅仅在电脑在应用,还能通过移动电话登录手机腾讯网址或者下载手机可用的手机客户端进行QQ的登录使用。QQ支持显示好友的在线信息,即时传送信息、即时交谈、即时发送文件和网址。QQ可以在Win95/98/NT/2000/XP/Win7操作系统下运行,是十分灵活的网络通信工具。 虽然QQ软件是免费的,而且功能也是越来越强大。但是唯一的不足的地方就是都需要在电脑联网的情况下才能使用,脱离了Internet根本就是一个只能看不能用的软件,为了能在脱离了Internet的情况下使用的局域网聊天工具,那就必须要有服务器端,而本系统就是包括服务器端和客户端,可以在局域网聊天的一个软件。 1 开发工具概述 1.1什么是Java Java是一种可以跨平台应用的面向对象的程序设计语言,他是由Sun公司在

java图形界面小程序

import java.awt.*; import java.awt.event.*; import javax.swing.*; import https://www.360docs.net/doc/322449847.html,ng.*; public class Test51{ Frame f; TextArea center; Label la1,la2,la3; Panel east,south,north; Button b1,b2,b3,b4; Choice l1; TextField t1; public static void main(String[] args){ Test51 mb = new Test51(); mb.go(); } private void go(){ f = new Frame("留言版程序"); f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent evt){ f.setV isible(false); System.exit(0); } }); f.setBounds(0,0,600,400); f.setLayout(new BorderLayout()); f.setResizable(false); north = new Panel(); south = new Panel(); east = new Panel(); center = new TextArea("留言内容:"); center.setEditable(false); b1 = new Button("清屏"); b2 = new Button("至顶"); b3 = new Button("至尾"); la1 = new Label("留言版"); la2 = new Label("你"); la3 = new Label(" 地说:");

Java swing实现简单的聊天室可发信息传文件

大家好,今天给大家演示一下如何用Java swing实现一个简单的聊天室系统,源码已经写好了,这里演示一下怎么导入运行,该系统基于cs架构,即客户端和服务端,采用socket通信方式,该项目可运行在任何Java环境下,jdk版本不限,一般来说网络编程都是大家的弱项,所以此项目可以用来好好学习一下Java关于网络方面的编程知识点。下面我们来看看导入运行步骤。 1.将源码导入到eclipse中(源码有客户端和服务端,必须先启动服务端客户端才可以使用)。 2.服务端导入进来了,现在我们先开启服务端。 3.服务端已开启,接下来导入客户端。 4.发现客户端导入后有个错误,一般是jre和jar包的问题,我们来配置一下,配置了jre后发现错误没有了,接下来我们来运行客户端。客户端运行结果如下: 由于第一次运行,没有账号,所以我们先注册一个账号,点击注册按

钮,注册界面如下图所示: 注册成功后我们用刚注册好的账号登录进去,如下所示: 登录上线后有声音提示,由于要聊天,所以我们还得再注册一个账号,

实现两个人之间的聊天。 再次运行login类,再启动一个程序。此时可以发现,在右侧的在线列表里面多了一个人,选择相应的人就可以聊天了。 我们来试试,下面是一些操作截图(双击右侧的在线好有就可以发文件):

上面是发信息的一些操作,下面我们来看看发文件的操作:

点击是后,文件就开始传送了,如下:

文件传完了,我们打开看看可以不可以,文件传输正常,视频可以播放。好了今天的演示就到这里吧,对这个源码感兴趣的可以加我V:qixinfang002获取源码,备注项目名称哦,适当收取一点搬运费哦!介意的勿扰!此外本人在工作学习过程中还收集整理了大量的经典项目,有需要的可以看看我的博客, 博客地址: Java项目地址:

java15个经典小程序

1,编写程序,判断给定的某个年份是否是闰年。 闰年的判断规则如下: (1)若某个年份能被4整除但不能被100整除,则是闰年。 (2)若某个年份能被400整除,则也是闰年。 import java.util.Scanner; class Bissextile{ public static void main(String[] arge){ System.out.print("请输入年份"); int year; //定义输入的年份名字为“year” Scanner scanner = new Scanner(System.in); year = scanner.nextInt(); if (year<0||year>3000){ System.out.println("年份有误,程序退出!"); System.exit(0); } if ((year%4==0)&&(year%100!=0)||(year%400==0)) System.out.println(year+" is bissextile"); else System.out.println(year+" is not bissextile "); } } 2,给定一个百分制的分数,输出相应的等级。 90分以上A级 80~89 B级 70~79 C级 60~69 D级 60分以下E级 import java.util.Scanner; class Mark{ public static void main(String[] args){ System.out.println("请输入一个分数"); //定义输入的分数为“mark”,且分数会有小数 double mark; Scanner scanner = new Scanner(System.in); mark = scanner.nextDouble(); //判断是否有输入错误。 if(mark<0||mark>100){

java聊天程序开题报告

大连大学 本科毕业论文(设计)开题报告 论文题目:JA V A聊天程序的设计与实现学院:信息工程学院 专业、班级:计科113 学生姓名:韩宗秋 指导教师(职称):王明军(讲师) 2015年 3 月 5 日填

毕业论文(设计)开题报告要求 开题报告既是规范本科生毕业论文工作的重要环节,又是完成高质量毕业论文(设计)的有效保证。为了使这项工作规范化和制度化,特制定本要求。 一、选题依据 1.论文(设计)题目及研究领域; 2.论文(设计)工作的理论意义和应用价值; 3.目前研究的概况和发展趋势。 二、论文(设计)研究的内容 1.重点解决的问题; 2.拟开展研究的几个主要方面(论文写作大纲或设计思路); 3.本论文(设计)预期取得的成果。 三、论文(设计)工作安排 1.拟采用的主要研究方法(技术路线或设计参数); 2.论文(设计)进度计划。 四、文献查阅及文献综述 学生应根据所在学院及指导教师的要求阅读一定量的文献资料,并在此基础上通过分析、研究、综合,形成文献综述。必要时应在调研、实验或实习的基础上递交相关的报告。综述或报告作为开题报告的一部分附在后面,要求思路清晰,文理通顺,较全面地反映出本课题的研究背景或前期工作基础。 五、其他要求 1.开题报告应在毕业论文(设计)工作开始后的前四周内完成; 2.开题报告必须经学院教学指导委员会审查通过; 3.开题报告不合格或没有做开题报告的学生,须重做或补做合格后,方能继续论文(设计)工作,否则不允许参加答辩; 4.开题报告通过后,原则上不允许更换论文题目或指导教师; 5.开题报告的内容,要求打印并装订成册(部分专业可根据需要手写在统一纸张上,但封面需按统一格式打印)。

JAVA SWING图形界面程序设计实验报告(附完整代码)

图形界面(GUI)程序设计 一、课题内容和要求 内容:设计和编写一个用于将人民币转换为等值的美元的程序,界面要求可以输入人民币的金额并可以得到转换后的结果。 要求:学习和理解JAVA SWING中的容器,部件,布局管理器和部件事件处理方法。通过编写和调试程序,掌握JAVA图形界面程序设计的基本方法。二、设计思路分析 class RMBtoDollar:主类,调用主函数。 class change:设置界面,并通过界面上的事件触发实现汇率转换。 三、概要设计 public class RMBtoDollar{ public static void main(String[] args); } class change extends JFrame implements MouseListener { JLabel l1, l2,l3; JTextField tf1, tf2; JButton b; double RMB, Dollar; public change(); public void mousePressed(MouseEvent e); public void mouseClicked(MouseEvent e); public void mouseEntered(MouseEvent e); public void mouseExited(MouseEvent e); public void mouseReleaseed(MouseEvent e);//鼠标释放时进行转换} 四、详细设计 import java.awt.*; import java.awt.event.*;

java简单聊天程序实验报告及代码

一、实验内容 实验题目: 1、使用URL访问用户指定网站,获取该网页的HTML代码显示给用户,并能保存至指定文件中。 2、使用ServerSockt,Socket对象实现两个用户之间的端到端聊天。 要求:采用UI界面设计,界面友好。 二、实验过程 (这是实验报告极其重要的内容。要抓住重点,可以从理论和实践两个方面考虑。这部分要写明依据什么知识点以及使用方法进行实验以及实验步骤。不要简单照抄实习指导,更不可写一大堆源代码) 题目1、 1、分析题目,了解URL类及其方法。 2、设计一个模拟浏览器界面,有一个文本框,文本区域,一个搜索按钮,一个保存按钮。 3、在搜索事件里面写获取HTML的代码,在保存你面写将内容保存至文件中。 题目2、 1、分析题目,了解import https://www.360docs.net/doc/322449847.html,.*,包下用到的一些类,比如URL, Socket和ServerSocket,以及这些类的方法,根据要实现的功能,进行调用。了解端到端的通讯,以及怎样建立连接。 2、设计界面:服务器界面,客户端界面。 3、写出对内容的读写代码,注意哪部分功能,在什么时候实现,应该写在哪部分。以及怎样通信:如图 三、实验结果 (应先列出测试数据,要写明实验的现象,实验数据的处理等。对于实验结果的表述,一般有三种方法:文字叙述(根据实验目的将实验结果系统化、条理化,用准确的专业术语客观地描述实验现象和结果,要有时间顺序以及各项指标在时间上的关系),图表(用表格或坐标图的方式使实验结果突出、清晰,便于相互比较,尤其适合于分组较多,且各组观察指标

一致的实验,使组间异同一目了然;每一图表应有表目和计量单位,应说明一定的中心问题),屏幕截图(实验结果也可以是屏幕截图,充分表明实验的实际情况)。在实验报告中,可任选其中一种或几种方法并用,以获得最佳效果。) 题目一、 界面与结果截图: 题目2、 服务器端截屏: 客户端截屏:

相关文档
最新文档