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

📄 ptpchatframe.java

📁 ICQ聊天程序
💻 JAVA
字号:
//2008/2/8,计算机网络课程设计
// 程序:ICQ聊天室窗口界面
// 范例文件:PtpChatFrame.java

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

class PtpChatFrame extends Frame
{
    Button 		closeButton,sentButton;	
    TextArea 	TAChat;
    TextField 	TFSent;
    Panel 		panel0,panel1,panel2,panel3;			
    Label 		label0=new Label("对方当前状态:");
    int    		ScreenWidth,ScreenHeight; 
    ClientFrame frm;
    String msg;	
    InetAddress ip;
    UDPClient udpClient;
    
    public PtpChatFrame(ClientFrame frm)
    {
        this.frm = frm;  
//        this.address = address; 
        
        sentButton= new Button("发送");
        closeButton= new Button("关闭");
        TAChat = new TextArea("", 10, 10);
        TFSent = new TextField(50);   				// 文字输入字段

        TFSent.addKeyListener(new TFListener()); 	// 注册事件
              
        TAChat.setEditable(false);					//TAChat  不可写   
		setLayout(new BorderLayout());				// 设定版面配置

		panel0 = new Panel();
		panel0.setLayout(new BorderLayout());

		panel1 = new Panel();
		panel1.setLayout(new GridLayout(1,2));

 		add(BorderLayout.CENTER,TAChat );			//聊天信息显示板块	
 		add(BorderLayout.SOUTH,panel0);				//发送信息,与关闭板块
 		
 		panel0.add(BorderLayout.NORTH,TFSent);
 		panel0.add(BorderLayout.SOUTH,panel1);
 			
 		panel1.add(sentButton);
 		panel1.add(closeButton);
 
        setSize(400, 300);							//设置初始大小	
      	ScreenWidth  = getToolkit().getScreenSize().width;//将窗口置于屏幕中央,宽度与高度皆为屏幕一半
      	ScreenHeight = getToolkit().getScreenSize().height;
      	setLocation((ScreenWidth - getWidth()) / 2,(ScreenHeight - getHeight()) / 2);
		setResizable(false);                     	//窗口大小不可变
      	setTitle("与"+frm.ptpAddress.getText()+"私聊中");//设置Title
      	setVisible(true);                         	//窗口为可见
      	try{ 
      		ip=InetAddress.getByName(frm.ptpAddress.getText()); //私聊地址
      	   }catch(Exception e)
      	   {
      	   		System.out.println ("Exception occurred with ptpIp.");
      	   		System.out.println (e);
      	   	}  
      	 
		 System.out.println (ip);///////////show ip					
		udpClient = new UDPClient();				//定义UDPClient 变量
		
		
	sentButton.addActionListener(
            new ActionListener() { 
                public void actionPerformed(ActionEvent e) {
//               frm.client0.dataout(TFSent.getText()); 
        try {
        		
        		msg=TFSent.getText();//要发送的信息
				udpClient.sentPtpMess(ip,msg);//调用函数 发送信息,参1:对方地址,参2:信息
        } catch (Exception e1) {
             System.out.println ("Exception occurred with socket.");
             System.out.println (e1);
             System.exit (1);
        }	
        		TAChat.append("I say:"+"\n"+msg+"\n");
        		
                TFSent.setText("");							//清空发送信息处
                   
                }//actionPerformed
            }//ActionListener
        );//sentButton.addActionListener
        
        
    closeButton.addActionListener(
            new ActionListener() { 
                public void actionPerformed(ActionEvent e) {
//                   setVisible(false); 
					udpClient.datagramSocket.close();
					dispose();
                   
                }
            }
        );

    addWindowListener(  // 按下关闭钮时结束程序
            new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                   setVisible(false); 
                 }
            }
        );
    }
    // 下方输入字段的键盘事件处理
    private class TFListener implements KeyListener
    {
        public void keyPressed(KeyEvent e)
        {
            // 如果按下的是Enter键
            if(e.getKeyCode() == KeyEvent.VK_ENTER)
            {
                frm.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 + -