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

📄 clientframe.java

📁 ICQ聊天程序
💻 JAVA
字号:
//2008/2/8,计算机网络课程设计
// 程序:ICQ聊天室窗口界面
// 范例文件:ClientFrame.java
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;

public class ClientFrame  extends JFrame
{
    JButton 	loginBtn,sentButton,closeButton,ptpChatBtn;	
    JTextArea 	TAChat,TAOnLine;
    JTextField 	TFAddress,ptpAddress, TFSent;
    JPanel 		panel0,panel1,panel2,panel3;			
    JLabel 		label0=new JLabel("当前在线:"); 			
    clientskt 	client0;  							// 客户端联机处理线程0(用于发送聊天信息)
    clientskt1 	client1;						    // 客户端联机处理线程1(用于发送当前在线信息)
    private 	JMenu fileMenu,aboutMenu;
  	private 	JMenuBar menuBar;
  	private 	JMenuItem exitMenuItem,registMenuItem,aboutMenuItem;
  	AboutDialog aboutDialog;
  	static 		ClientFrame frm;
    PtpChatFrame PtpCF;
    InetAddress serverAddress; 						//对方IP地址
    int    		ScreenWidth,ScreenHeight; 
    RegistFrame registFrame;
    String		serAddress ;
private ImageIcon copyrightImage = new ImageIcon();

    public ClientFrame()
    {
        loginBtn = new JButton("登陆");				//JButton
        ptpChatBtn	 = new JButton("私聊");
        ptpChatBtn.setEnabled(false);				//setEnabled
        
        copyrightImage = new ImageIcon(AboutDialog.class.getResource("images\\info_enter .png"));//image
        sentButton= new JButton("发送", copyrightImage) ;//JButton with image
        sentButton.setDisabledIcon(copyrightImage);
        
        closeButton= new JButton("关闭");
        closeButton.setEnabled(false);
        TAChat = new JTextArea("", 10, 50);			//JTextArea   , TAChat for chat info
        TAOnLine = new JTextArea("", 10, 8); 		//JTextArea		TAOnLine for OnLine info
        JScrollPane scrollpane = new JScrollPane(TAChat);
        scrollpane.setHorizontalScrollBarPolicy(
        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    	scrollpane.setVerticalScrollBarPolicy(
        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        
        JScrollPane scrollpane1 = new JScrollPane(TAOnLine);
        scrollpane1.setHorizontalScrollBarPolicy(
        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    	scrollpane1.setVerticalScrollBarPolicy(
        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        TFSent = new JTextField(50);   					// 文字输入字段
        TFAddress = new JTextField("输入IP地址", 11);  	// IP字段
        ptpAddress= new JTextField("输入对方IP地址", 11);
        ptpAddress.setEnabled(false);
//        copyrightImage = new ImageIcon(AboutDialog.class.getResource("images\\hand.png"));
//        setIconImage(  );
        fileMenu = new JMenu("文件");
        registMenuItem = new JMenuItem("注册");
       	registMenuItem.addActionListener(
        	new ActionListener() {
      			public void actionPerformed(ActionEvent event) {
        		System.exit(0); //退出系统
     	 		}
    		}
    	); 
    //	fileMenu.setMnemonic('F');
    	exitMenuItem = new JMenuItem("退出");
    //	exitMenuItem.setMnemonic('E');
    	exitMenuItem.addActionListener(
        	new ActionListener() {
      			public void actionPerformed(ActionEvent event) {
        		System.exit(0); //退出系统
     	 		}
    		}
    	); 
       fileMenu.add(registMenuItem);
       fileMenu.add(exitMenuItem);
        
       aboutMenu = new JMenu("帮助");
       //aboutMenu.setMnemonic('H');
       aboutMenuItem = new JMenuItem("关于");
       aboutMenuItem.addActionListener(
        new ActionListener() {
      	public void actionPerformed(ActionEvent event) {
        aboutDialog=new AboutDialog(); //生成Dialog对象
     	 }
    	}	
    );
       aboutMenu.add(aboutMenuItem);


    	menuBar = new JMenuBar();
    	menuBar.add(fileMenu);
    	menuBar.add(aboutMenu);
    	setJMenuBar(menuBar);

//    	label = new JLabel("请点击按钮或执行菜单操作");
//    	label.setFont(new Font("Serif", Font.ITALIC , 18));

        TFSent.addKeyListener(new TFListener()); 	// 注册事件

//        TAChat.setEditable(false);					//TAChat  不可写
//        TAOnLine.setEditable(false);				//TAOnLine 不可写
      
		setLayout(new BorderLayout());				// 设定版面配置
		panel0 = new JPanel();						
		panel0.setLayout(new FlowLayout());
		panel1 = new JPanel();
		panel1.setLayout(new BorderLayout());
		panel2 = new JPanel();
		panel2.setLayout(new BorderLayout());
		panel3 = new JPanel();
		panel3.setLayout(new GridLayout(1,2));
	
 										
 		add(BorderLayout.NORTH,panel0 );			//登陆板块
 		add(BorderLayout.CENTER,scrollpane );			//聊天信息显示板块	
 		add(BorderLayout.EAST,panel1 );				//在线提示板块
 		add(BorderLayout.SOUTH,panel2);				//发送信息,与关闭板块
 			
 		panel0.add(TFAddress);
 		panel0.add(loginBtn);
 		panel0.add(ptpAddress);
 		panel0.add(ptpChatBtn);
 		
 		panel1.add(label0,BorderLayout.NORTH);
 		panel1.add(scrollpane1,BorderLayout.CENTER);
 		
 		panel2.add(TFSent,BorderLayout.NORTH);
 		panel2.add(panel3,BorderLayout.CENTER);		//底端按钮			
 		
 		panel3.add(sentButton);
 		panel3.add(closeButton);
 		
        setSize(400, 300);							//设置初始大小	
             
      	ScreenWidth  = getToolkit().getScreenSize().width;//将窗口置于屏幕中央,宽度与高度皆为屏幕一半
      	ScreenHeight = getToolkit().getScreenSize().height;
      	setLocation((ScreenWidth - getWidth()) / 2,(ScreenHeight - getHeight()) / 2);
                  
        								
      	setResizable(false);                     	//窗口大小不可变
      	setTitle("欢迎来到ICQ聊天室");				//设置Title
      	setVisible(true);                         	//窗口为可见 

        // 按下“客户端”按钮的事件处理
        loginBtn.addActionListener(		//登陆按钮
            new ActionListener() {  
            	String strs;				
                public void actionPerformed(ActionEvent e) { 
                
              try{                                                                               serverAddress 	= InetAddress.getLocalHost()  ;			
              		serAddress 		= InetAddress.getLocalHost( ).toString() ;				//获取计算机名与地址
              		strs 			=InetAddress.getLocalHost().getHostAddress().toString();//获取计算机地址
//              		strs 			=InetAddress.getLocalHost().getHostName() .toString();
              		
            		}
                 catch (Exception e2) {
             		System.out.println ("Exception occurred with socket.");
             		System.out.println (e2);
             		System.exit (1);
         			 }      	
//                	TAChat.append( "getLocalHost:"+serverAddress.toString() +"\n" );
//                	TAChat.append( strs+"\n" );
 
//                    client0 = new clientskt(strs, 8000, frm);  	// 建立客户端联机线程          
//                    client1 = new clientskt1(strs, 8001, frm);
					client0 = new clientskt(TFAddress.getText(), 8000, frm);  	// 建立客户端联机线程          
                    client1 = new clientskt1(TFAddress.getText(), 8001, frm);
                    client0.start();							// 启动线程进行联机
                    client1.start();
                    
                    TFAddress.setEnabled(false);				// 设定按钮与上面文字字段失效与否
                    loginBtn.setEnabled(false);
                    closeButton.setEnabled(true);	
                    ptpAddress.setEnabled(true);
                    ptpChatBtn.setEnabled(true);
                    
                }
            }
        );
        registMenuItem.addActionListener(	//注册按钮(登陆前先注册)
            new ActionListener() {  
                public void actionPerformed(ActionEvent e) {         
                  registFrame = new RegistFrame();
                 
                    
                }
            }
        );
        
        ptpChatBtn.addActionListener(	//私聊按钮(一对一聊天)
            new ActionListener() {  
                public void actionPerformed(ActionEvent e) {         
                    PtpCF=new PtpChatFrame(frm);
                    
                }
            }
        );
		sentButton.addActionListener(	//发送按钮事件(发送消息)
            new ActionListener() { 
                public void actionPerformed(ActionEvent e) {
                  	client0.dataout(TFSent.getText());
                  	TFSent.setText("");
                   
                }
            }
        );
        closeButton.addActionListener(	//关闭按钮事件 (退出)
            new ActionListener() { 
                public void actionPerformed(ActionEvent e) {
                  	client0.dataout("bye");
                  	System.exit(0);
                   
                }
            }
        );


        addWindowListener(  			// 按下关闭钮时结束程序
            new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                 }
            }
        );
    }

    public static void main(String args[])
    {
        frm = new ClientFrame();
    }

    private class TFListener implements KeyListener// 下方输入字段的键盘事件处理
    {
        public void keyPressed(KeyEvent e)
        {
            // 如果按下的是Enter键
            if(e.getKeyCode() == KeyEvent.VK_ENTER)
            {
                client0.dataout(TFSent.getText());
                // 清除下方文字字段内容
                TFSent.setText("");
            }
        }

        public void keyTyped(KeyEvent e) {}

        public void keyReleased(KeyEvent e) {}
    }
}

⌨️ 快捷键说明

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