📄 ptpchatframe.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 + -