聊天室系统的开发(3)

2019-05-26 16:01

(1)提供用户登陆界面,用户信息输入、连接服务器等功能。 (2)常用用户信息正确性验证。

(3)登陆成功后,生成一个客户端的主界面对象,由该对象生成一个客户端对象。

//==========================程序开始=========================// //DBC LoginFrame.class import java.awt.*;

import java.awt.event.*; import javax.swing.*;

public class LoginFrame extends JFrame implements ActionListener {

private JPanel center; private Container mainc; private String username; private String passwords; private int pp; JTextField u; JTextField p; JTextField s;

JTextField serverport; JLabel selectserver; JLabel port; JLabel user; JLabel pass; JButton ok; JButton cancle;

public LoginFrame() {

selectserver = new JLabel(\服务器:\ port = new JLabel(\端 口:\ user = new JLabel(\用户名:\ pass = new JLabel(\密 码:\ ok = new JButton(\确定\ cancle = new JButton(\取消\ u = new JTextField(\ p = new JTextField(\

s = new JTextField(\ serverport = new JTextField(\ mainc = this.getContentPane();

mainc.setLayout(new FlowLayout()); ok.addActionListener(this); cancle.addActionListener(this); u.addActionListener(this); p.addActionListener(this);

s.addActionListener(this);

serverport.addActionListener(this); mainc.add(selectserver); mainc.add(s); mainc.add(port);

mainc.add(serverport); mainc.add(user); mainc.add(u); mainc.add (pass); mainc.add(p); mainc.add(ok); mainc.add(cancle); }

public static void main(String[] args) {

LoginFrame log = new LoginFrame(); log.setSize(250,180); log.setVisible(true);

log.setDefaultCloseOperation(EXIT_ON_CLOSE); log.setResizable(false);

log.setTitle(\VA.BBS.登陆\ }

public void actionPerformed(ActionEvent e) { if

(e.getSource()==ok||e.getSource()==u||e.getSource()==p||e.getSource()==s||e.getSource()==serverport) {

username = this.u.getText(); passwords = this.p.getText();

if (serverport.getText().equals(\ {

pp = 5555; } else

pp = Integer.parseInt(this.serverport.getText()); if (username.equals(\ {

JOptionPane.showMessageDialog(this,\请输入用户名!\信息提示\ return ; }

if(this.checkPass(passwords).equals(new Boolean(true))); {

MainBord mb = new MainBord(600,400,\VA爱好者聊天室 当前用户: \ Thread t1 = new Thread(mb); t1.start();

mb.setVisible(true);

mb.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setVisible(false); } }

else if (e.getSource()==cancle) {

this.dispose(); } }

public Boolean checkPass(String pass) {

return new Boolean(true); } }

//==========================程序结束============================//

4.3.4 客户端对象

设计思想:

(1)先总体设计该类,将该类封装为一个客户端,向用户提供连接服务器、接收消息、发送消息等功能。

(2)在连接上服务器后,会创建该类的一个实例,代表一个客户端。利用该客户端进行所有的客户活动。

(3)提供receiveMessage()、sendMessage(Stringmsg)方法,进行接收消息和发送消息。同时在发送消息时进行一些错误控制如不能发送空消息等。

//=============================程序开始=========================// //DBC Client.java import java.io.*; import java.net.*; import javax.swing.*; class Client {

private static int PORT=5555; private Socket s;

private BufferedReader in; private PrintWriter out; private String username; private String servername;

private int port;

JTextArea jTextArea1 = new JTextArea(); JButton jButton1 = new JButton();

public Client(String name,String servername,int port) {

username = name;

this.servername = servername; this.port = port; try {

InetAddress addr = InetAddress.getByName(servername); s = new Socket(addr,port);

JOptionPane.showMessageDialog(new JWindow(),\已连接服务器!\连接成功\TION_MESSAGE);

in = new BufferedReader(new InputStreamReader(s.getInputStream())); out = new PrintWriter(new BufferedWriter(new OutputStreamWriter( s. getOutputStream())), true); out.println(username);

System.out.println(username);

}catch (UnknownHostException ue) {

JOptionPane.showMessageDialog(new JWindow(),\出现错误:未知主机...\聊天错误\ }catch (NullPointerException npe){

JOptionPane.showMessageDialog(new JWindow(),\出现错误:服务器未开启...\连接错误\ }catch (IOException e) { } }

public String receiveMessage() throws Throwable {

try {

while (true) {

if (s.isClosed()) {

throw(new Throwable()); }

String str=\ str =in.readLine(); return str; }

}catch(IOException e) {

System.out.println(\读取数据错误...\ throw(new Throwable());

}catch(Throwable t){

throw(new Throwable()); } }

public void sendMessage(String str) {

if (str.equals(\ {

JOptionPane.showMessageDialog(new JWindow(),\不能发送空消息!\聊天提示\JOptionPane.ERROR_MESSAGE); return; }

out.println(username+\ 说: \ }

public Client() { try {

jbInit(); }

catch(Exception e) { e.printStackTrace(); } }

private void jbInit() throws Exception { jButton1.setText(\ jTextArea1.setText(\ } }

//==============================程序结束=========================//

4.3.5 聊天室主界面

设计思想:

(1)用户登陆成功后的主操作界面,提供聊天信息发送、聊天信息显示、显示在线用户、退出、重登陆、隐身等功能(注意,某些功能未实现,读者可以在此基础上添加)。

(2)在该类主要封闭了聊天信息的具体显示、在线用户的刷新等功能的实现。 (3)注意该线程实现了Runnable接口,提供多线程服务。

//===========================程序开始==========================// //DBC MainBord.java文件 import java.awt.*;

import java.awt.event.*; import javax.swing.*;

public class MainBord extends JFrame implements ActionListener,Runnable {


聊天室系统的开发(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《耳听为虚 - 同音字和同音词》导学案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: