⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.java

📁 JAVA网络聊天室.运用网络编程、文件操作、数据流处理以及多线程等基础技术编写一个网络聊天室.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/**********************************************************************************/
/////////////////////////////////////客户端源文件////////////////////////////////////
/**********************************************************************************/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.util.*;


public class Client
{
    public static void main(String[] args)
    {
        String UsrName = new String();
        new Client(UsrName);
    }
    public Client(String UsrName)
    {
        MyFrame myFrame = new MyFrame(UsrName);
    }
}

class MyFrame extends Frame
{
    Panel p1;
    Panel p2;
    Panel p3;
    JTextArea show;
    JScrollPane scrollPane ;
    TextField input;
    Label port;
    Label ip;
    TextField tPort;
    TextField tIp;
    Button submit;
    Button login;
    Button logout;
    Button theme;
    Socket s = null;
    static String UsrName;
    DataOutputStream  dos = null;
    DataInputStream dis = null;
    private boolean bConnect = false;
    private static int cor = 1;
    private JMenuBar menuBar ;
    private JMenu setFMenu;
    private JMenuItem jmi1, jmi2, jmi3, jmi4, jmi5, jmi6;
     
    public MyFrame(String UsrName)
    {
        init(UsrName);
    }
    public void init(String UsrName)
    {
    /***********************************SHOW BEGIN*************************************************/
        p1 = new Panel();
        show = new JTextArea(14,51);
        scrollPane = new JScrollPane(show,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER) ;
        show.setEditable(false); 
        show.setBackground(Color.lightGray);
        p1.add( scrollPane );
        add(p1,BorderLayout.CENTER);
    /***********************************SHOW END****************************************************/

    /***********************************PANEL2 BEGIN************************************************/
        this.UsrName = UsrName;
        this.setTitle("夜雪聊天室-[" + UsrName + "]");
        p2 = new Panel(new FlowLayout(FlowLayout.LEFT));
        port = new Label("PORT");
        tPort  = new TextField(7);
        ip = new Label("IP");
        tIp = new TextField(25);
	login = new Button("Login");
        logout = new Button("帐号");
        theme = new Button("主题");
        
	p2.add(port);
	p2.add(tPort);
	p2.add(ip);
	p2.add(tIp);
	p2.add(login);
	login.addActionListener(new submitAction());
        p2.add(logout);
	logout.addActionListener(new submitAction());
        p2.add(theme);
        theme.addActionListener(new submitAction());
	add(p2,BorderLayout.NORTH);
        setResizable(false);
    /***********************************PANEL2 END************************************************/

    /***********************************设置菜单模块***********************************************/
        menuBar = new JMenuBar();
        setFMenu = new JMenu("系统设置");
        menuBar.add(setFMenu);
        p2.add( menuBar ) ;
        jmi1 = new JMenuItem("常用短语");
        jmi1.addActionListener(new JMenuSet());
        setFMenu.add(jmi1);
        jmi2 = new JMenuItem("复制记录");
        jmi2.addActionListener(new JMenuSet());
        setFMenu.add(jmi2);
        jmi3 = new JMenuItem("记录另存为");
        jmi3.addActionListener(new JMenuSet());
        setFMenu.add(jmi3);
        jmi4 = new JMenuItem("设置显示");
        jmi4.addActionListener(new JMenuSet());
        setFMenu.add(jmi4);
        jmi5 = new JMenuItem("关于..");
        jmi5.addActionListener(new JMenuSet());
        setFMenu.add(jmi5);
        jmi6 = new JMenuItem("退出");
        jmi6.addActionListener(new JMenuSet());
        setFMenu.add(jmi6);
		
    /***********************************PANEL3 BEGIN**********************************************/	
	p3 = new Panel(new FlowLayout(FlowLayout.LEFT));
	input = new TextField(70);
	submit = new Button("发送");
	p3.add(input);
	p3.add(submit);
	input.addActionListener(new inputAction());
	submit.addActionListener(new submitAction());
	add(p3,BorderLayout.SOUTH);
    /***********************************PANEL3 END************************************************/	

    /***********************************FRAM BEGIN*************************************************/	
	addWindowListener(new WindowAdapter() 
        {
            public void windowClosing(WindowEvent E) 
            {
                System.exit(0);
            }
        });
	this.setSize(300, 300);
	setLocation(100,100);
	pack();
        setVisible(true);
    /************************************FRAM END**************************************************/	
    }
    
    class submitAction implements ActionListener
    {
        int i = 1;
        public void actionPerformed(ActionEvent E)
        {
            if ("发送".equals(E.getActionCommand()))
            {
                String str = UsrName + ":" + input.getText().trim();  //数据由用户名+信息构成
	        input.setText("");
	        SendMes(str);
            }
            else if ("Login".equals(E.getActionCommand()))
            {
                if(i == 1)
                {
                    String c_serverIP = tIp.getText();   //记录服务器IP地址
                    int c_PORT = Integer.parseInt(tPort.getText());  //记录端口
                    if(c_PORT == 8888)
                    {
                        int mc_PORT = 1001;
                        new Login(c_serverIP, mc_PORT);
                        new Login(this);  //给Login类传送当前对象指针
                        i++;
                    }
                    else
                        JOptionPane.showMessageDialog(null, "端口不匹配!!!\n请检查并将端口设置为:[8888]", "登陆出错!", JOptionPane.ERROR_MESSAGE);
                }
                else
                    JOptionPane.showMessageDialog(null, "你的帐户已经登陆!", "重复登陆!", JOptionPane.ERROR_MESSAGE);
            }
            else if ("帐号".equals(E.getActionCommand()))
            {
                String select = "null";
                select = String.valueOf(JOptionPane.showInputDialog("请选择你要进行的操作:\nC) 切换登陆新帐户\nR) 重启客户端程序"));
                if(select.equals("C") || select.equals("c"))   //选择用户所需要的数据
                {
                    int mc_PORT = 1001;
                    String c_serverIP = tIp.getText(); 
                    new Login(c_serverIP, mc_PORT); 
                }
                else if(select.equals("R") || select.equals("r")) 
                {
                    dispose();
                    new MyFrame(UsrName);
                }
                else if(select.equals("null"))
                {
                }
                else
                    JOptionPane.showMessageDialog(null, "无此选项!\n请输入合法范围内的数据选项!", "选择出错!", JOptionPane.ERROR_MESSAGE);
            }
            else if ("主题".equals(E.getActionCommand()))
            {
                switch(cor)
                {
                    case 1: show.setBackground(Color.DARK_GRAY);
                             show.setForeground(Color.CYAN);
                             break; 
                    case 2: show.setBackground(Color.BLUE);
                             show.setForeground(Color.PINK);
                             break;
                    case 3: show.setBackground(Color.ORANGE);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -