import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import java.net.*;
/*
* 聊天客户端的主框架类
*/
public class ChatClient extends JFrame implements ActionListener{
String ip = "127.0.0.1";//连接到服务端的ip地址
int port = 8888;//连接到服务端的端口号
String userName = "匆匆过客";//用户名
int type = 0;//0表示未连接,1表示已连接
Image icon;//程序图标
JComboBox combobox;//选择发送消息的接受者 ( 将按钮或可编辑字段与下拉列表组合的组件。
//用户可以从下拉列表中选择值,下拉列表在用户请求时显示。如果使组合框处于可编辑状态,
//则组合框将包括用户可在其中键入值的可编辑字段。)
JTextArea messageShow;//客户端的信息显示 (允许多行文本输入)
JScrollPane messageScrollPane;//信息显示的滚动条
JLabel express,sendToLabel,messageLabel ; //(用于短文本字符串或图像或二者的显示区)
JTextField clientMessage;//客户端消息的发送 (只允许输入一行文本)
JCheckBox checkbox;//悄悄话 (复选按钮,)
JComboBox actionlist;//表情选择 (将按钮或可编辑字段与下拉列表组合的组件)
JButton clientMessageButton;//发送消息 (普通按钮)
JTextField showStatus;//显示用户连接状态
Socket socket;
ObjectOutputStream output;//网络套接字输出流
ObjectInputStream input;//网络套接字输入流
ClientReceive recvThread; //*\\
//建立菜单栏
JMenuBar jMenuBar = new JMenuBar();//(创建新的菜单栏) //(菜单栏的实现。将 JMenu 对象添加到菜单栏以构造菜单。当用户选择 JMenu 对象时,
//就会显示其关联的 JPopupMenu,允许用户选择其上的某一个 JMenuItem。)
//建立菜单组
JMenu operateMenu = new JMenu ("操作(O)"); //(构造一个新 JMenu,用提供的字符串作为其文本。)
//建立菜单项
JMenuItem loginItem = new JMenuItem ("用户登录(I)"); //(菜单中的项的实现。菜单项本质上是位于列表中的按钮。)
JMenuItem logoffItem = new JMenuItem ("用户注销(L)"); //(创建带有指定文本的 JMenuItem)
JMenuItem exitItem=new JMenuItem ("退出(X)");
JMenu conMenu=new JMenu ("设置(C)");
JMenuItem userItem=new JMenuItem ("用户设置(U)");
JMenuItem connectItem=new JMenuItem ("连接设置(C)");
JMenu helpMenu=new JMenu ("帮助(H)");
JMenuItem helpItem=new JMenuItem ("帮助(H)");
//建立工具栏
JToolBar toolBar = new JToolBar(); // 创建新的工具栏;默认的方向为 HORIZONTAL。 (JToolBar 提供了一个用来显示常用的 Action 或控件的组件)
//建立工具栏中的按钮组件
JButton loginButton;//用户登录
JButton logoffButton;//用户注销
JButton userButton;//用户信息的设置
JButton connectButton;//连接设置
JButton exitButton;//退出按钮
//框架的大小
Dimension faceSize = new Dimension(400, 600);
JPanel downPanel ; //(除了背景外不会自行绘制任何内容)
GridBagLayout girdBag;
GridBagConstraints girdBagCon; //(GridBagLayout 类是一个灵活的布局管理器,它不要求组件的大小相同
//(GridBagConstraints 类指定使用 //便可以将组件垂直、水平或沿它们的基线对齐。
// GridBagLayout 类布置的组件的约束) //每个 GridBagLayout 对象维持一个动态的矩形单元网格,每个组件占用一
//个或多个这样的单元,该单元被称为显示区域。)
public ChatClient(){
init();//初始化程序
//添加框架的关闭事件处理
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//(设置用户在此窗体上发起 "close" 时默认执行的操作。必须指定以下选项之一:
//DO_NOTHING_ON_CLOSE(在 WindowConstants 中定义):不执行任何操作;要求程序在已注册的 WindowListener 对象的 windowClosing 方法中处理该操作。
//HIDE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册的 WindowListener 对象后自动隐藏该窗体。
//DISPOSE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册 WindowListener 的对象后自动隐藏并释放该窗体。
//EXIT_ON_CLOSE(在 JFrame 中定义):使用 System exit 方法退出应用程序。仅在应用程序中使用。
//默认情况下,该值被设置为 HIDE_ON_CLOSE。更改此属性的值将导致激发属性更改事件,其属性名称为 "defaultCloseOperation"。 )
this.pack();
//设置框架的大小
this.setSize(faceSize);
//设置运行时窗口的位置
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation( (int) (screenSize.width - faceSize.getWidth()) / 2,
(int) (screenSize.height - faceSize.getHeight()) / 2);
this.setResizable(false);
this.setTitle("聊天室客户端"); //设置标题
//程序图标
icon = getImage("icon.gif");
this.setIconImage(icon); //设置程序图标
show();
//为操作菜单栏设置热键'V'
operateMenu.setMnemonic('O');
//为用户登录设置快捷键为ctrl+i
loginItem.setMnemonic ('I');
loginItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_I,InputEvent.CTRL_MASK));
//为用户注销快捷键为ctrl+l
logoffItem.setMnemonic ('L');
logoffItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_L,InputEvent.CTRL_MASK));
//为退出快捷键为ctrl+x
exitItem.setMnemonic ('X');
exitItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_X,InputEvent.CTRL_MASK));
//为设置菜单栏设置热键'C'
conMenu.setMnemonic('C');
//为用户设置设置快捷键为ctrl+u
userItem.setMnemonic ('U');
userItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_U,InputEvent.CTRL_MASK));
//为连接设置设置快捷键为ctrl+c
connectItem.setMnemonic ('C');
connectItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_C,InputEvent.CTRL_MASK));
//为帮助菜单栏设置热键'H'
helpMenu.setMnemonic('H');
//为帮助设置快捷键为ctrl+p
helpItem.setMnemonic ('H');
helpItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_H,InputEvent.CTRL_MASK));
}
/**
* 程序初始化函数
*/
public void init(){
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
//添加菜单栏
operateMenu.add (loginItem);// (往"操作(O)"
operateMenu.add (logoffItem);// (将菜单项(loginItem按钮)追加到此菜单的末尾)
operateMenu.add (exitItem);
jMenuBar.add (operateMenu); // (将指定的菜单追加到菜单栏的末尾)
conMenu.add (userItem); // (往"设置“菜单中加"用户设置(U)"与"连接设置(C)"按钮)
conMenu.add (connectItem);
jMenuBar.add (conMenu);
helpMenu.add (helpItem);
jMenuBar.add (helpMenu);
setJMenuBar (jMenuBar);
//初始化按钮
loginButton = new JButton("登录");
logoffButton = new JButton("注销");
userButton = new JButton("用户设置" );
connectButton = new JButton("连接设置" );
exitButton = new JButton("退出" );
//当鼠标放上显示信息
loginButton.setToolTipText("连接到指定的服务器");
logoffButton.setToolTipText("与服务器断开连接");
userButton.setToolTipText("设置用户信息");
connectButton.setToolTipText("设置所要连接到的服务器信息");
//将按钮添加到工具栏
toolBar.add(userButton);
toolBar.add(connectButton);
toolBar.addSeparator();//添加分隔栏
toolBar.add(loginButton);
toolBar.add(logoffButton);
toolBar.addSeparator();//添加分隔栏
toolBar.add(exitButton);
contentPane.add(toolBar,BorderLayout.NORTH);
checkbox = new JCheckBox("悄悄话");
checkbox.setSelected(false);
actionlist = new JComboBox();
actionlist.addItem("微笑地");
actionlist.addItem("高兴地");
actionlist.addItem("轻轻地");
actionlist.addItem("生气地");
actionlist.addItem("小心地");
actionlist.addItem("静静地");
actionlist.setSelectedIndex(0);
//初始时
loginButton.setEnabled(true);
logoffButton.setEnabled(false);
//为菜单栏添加事件监听
loginItem.addActionListener(this);
logoffItem.addAct
没有合适的资源?快使用搜索试试~ 我知道了~
java聊天器程序限于局域网通信
共45个文件
class:25个
java:12个
bak:4个
需积分: 9 1 下载量 5 浏览量
2011-07-17
21:09:18
上传
评论
收藏 66KB ZIP 举报
温馨提示
用java写的聊天器,限定在局域网中实现
资源推荐
资源详情
资源评论
收起资源包目录
聊天器.zip (45个子文件)
聊天器
chatclient
ConnectConf$3.class 705B
ConnectConf.java 3KB
ChatClient.java.bak 16KB
icon.gif 575B
Help.class 3KB
Help$1.class 482B
ClientReceive.java 2KB
ClientReceive.class 2KB
Help.java 2KB
MANIFEST.MF 49B
UserConf$2.class 635B
UserConf$1.class 1KB
UserConf.java 3KB
ConnectConf$2.class 647B
ConnectConf$1.class 2KB
ChatClient.java 16KB
ChatClient.class 12KB
UserConf$3.class 693B
ChatClient$1.class 601B
ClientReceive.java.bak 2KB
UserConf.class 3KB
ConnectConf.class 3KB
chatServer
ServerReceive.java 4KB
UserLinkList.java 1KB
ServerReceive.java.bak 4KB
icon.gif 575B
UserLinkList.class 1KB
Help.class 3KB
Node.java 238B
PortConf.class 3KB
ChatServer$1.class 541B
PortConf$1.class 1KB
Node.class 472B
Help$1.class 482B
Help.java 2KB
ChatServer.class 10KB
MANIFEST.MF 49B
PortConf.java 3KB
ServerListen.java.bak 2KB
ChatServer.java 12KB
PortConf$2.class 626B
ServerListen.class 2KB
PortConf$3.class 684B
ServerListen.java 2KB
ServerReceive.class 3KB
共 45 条
- 1
资源评论
一个无名女程序员
- 粉丝: 9
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功