📄 denglu.java
字号:
day=(String)jc_day.getSelectedItem();//存取日变量 信息
birth=year+"/"+month+"/"+day;//存取生日变量信息
if (jt_email.getText().length()!=0)
{
email=jt_email.getText();//存取邮箱地址
}
else
{
JOptionPane.showMessageDialog(null,"Email不能为空!","WARNING",JOptionPane.WARNING_MESSAGE);//弹出消息框
return;
}
if (jt_ip.getText().length()==0)
{
JOptionPane.showMessageDialog(null,"IP地址不能为空!");//弹出消息框
return;
}
if (jt_question.getText().length()!=0)//判断当输入的问题不为空时的情况
{
question=jt_question.getText(); //存取问题
}
if (jt_answer.getText().length()!=0)//判断当输入的答案不为空时的情况
{
answer=jt_answer.getText();//存取答案
}
//================初始化Message类及其内的变量值
Message m=new Message();
m.name=name;
m.password=password;
m.sex=sex;
m.birth=birth;
m.email=email;
m.question=question;
m.answer=answer;
try//处理异常
{
//设置文件输出流
Socket socket=new Socket(ip,1002);//连接到服务器
ObjectOutputStream oos=new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(m);
InputStreamReader in=new InputStreamReader(socket.getInputStream());//字节流(可做读操作)
BufferedReader br=new BufferedReader(in);//过滤器流
String str=br.readLine();
if(str.equals("ok"))//判断当服务器发送过来的信息为"ok"时的情况
{
JOptionPane.showMessageDialog(null,str);
new denglu();
dispose();
}
else
{
JOptionPane.showMessageDialog(null,str);
}
}
catch (Exception e2)
{
System.out.println(e2);
}
}
catch(Exception e)
{
System.out.println("Error!");
}
}
if (obj==jb2)//清除所有内容
{
jt_name.setText("");
jpf.setText("");
jpf2.setText("");
jt_email.setText("");
jt_question.setText("");
jt_answer.setText("");
jt_ip.setText("");
}
}//按钮事件代码结束
//============================================主函数
public static void main(String[] args)
{
new zhuce();
}//主函数结束
}//整个注册类结束
//=========================================================================================================
//声明一个聊天类
class liao extends JFrame implements ActionListener,Runnable
{
JPanel jp;//容器框架变量
JLabel jl_title,jl_name,jl_pw,jl_ip,jl_p;//静态文本变量
JTextField jt_name,jt_time,jt_ip;//文本框变量
JButton jb,jb2,jb3;//按钮变量
GridBagLayout gb;//网格包变量
GridBagConstraints gbc;//设置网格包属性变量
Socket client;//一个套接字变量
TextArea jta;//显示信息的文本框变量
Thread th;//设置时间和日期
Date date;//显示日期的变量
GregorianCalendar calendar;//显示时间的变量
String strDate,strTime,strStatus;//存储时间的字符串变量
String ip;//存储IP地址的字符串变量
//====================================构造函数
public liao()
{
super("客户聊天室");
jp=new JPanel();//初始化容器控件
setContentPane(jp);//把容器添加到框架中去
setDefaultCloseOperation(EXIT_ON_CLOSE);//设置应用程序的关闭
jp.setBackground(new Color(255,255,102));//设置容器的背景颜色
//============初始化静态文本
jl_p=new JLabel(new ImageIcon("image/Kingsoft.gif"));
Font font=new Font("华文新魏",Font.BOLD,18);//设置字体属性
jl_ip=new JLabel("IP:");
jl_ip.setFont(font);//添加字体属性
jl_ip.setForeground(Color.black);//设置字体颜色
jl_title=new JLabel("客户聊天室");//初始化标题
jl_title.setFont(font);//添加字体属性
jl_title.setForeground(Color.blue);//设置字体颜色
jl_name=new JLabel("发送信息:");//初始化标题
jl_name.setFont(font);//添加字体属性
jl_name.setForeground(Color.black);//设置字体颜色
jl_pw=new JLabel("显示:");//初始化标题
jl_pw.setFont(font);//添加字体属性
jl_pw.setForeground(Color.black);//设置字体颜色
//==============初始化文本框
jt_ip=new JTextField(20);
jt_name=new JTextField(20);
jt_time=new JTextField(20);
//==============初始化按钮
jb=new JButton("发送");
jb.setForeground(Color.black);//设置字体颜色
jb.setFont(font);//添加字体属性
jb2=new JButton("清空");
jb2.setForeground(Color.black);//设置字体颜色
jb2.setFont(font);//添加字体属性
jb3=new JButton("登陆IP");
//============实现按钮的监听
jb.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
//=============初始化信息框
jta=new TextArea("==欢迎进入*兔巴哥*聊天室==",10,30);
Font font1=new Font("华文新魏",Font.BOLD,14);//设置字体属性
jta.setEditable(false);//jta不可编辑
jta.setForeground(Color.blue);//设置字体颜色
jta.setFont(font1);//添加字体属性
//============初始化网格包属性
gb=new GridBagLayout();
gbc=new GridBagConstraints();
jp.setLayout(gb);//将网格包添加到容器中去
//添加图片位置
gbc.fill=GridBagConstraints.BOTH;
gbc.anchor=GridBagConstraints.CENTER;
gbc.gridx=3;
gbc.gridy=0;
gb.setConstraints(jl_p,gbc);
jp.add(jl_p);
//设置控件标题“客户聊天室”的位置
gbc.fill=GridBagConstraints.BOTH;
gbc.anchor=GridBagConstraints.CENTER;
gbc.gridx=3;
gbc.gridy=1;
gb.setConstraints(jl_title,gbc);
jp.add(jl_title);
//设置控件时间框的位置
gbc.fill=GridBagConstraints.BOTH;
gbc.anchor=GridBagConstraints.NORTH;
gbc.gridx=3;
gbc.gridy=2;
gb.setConstraints(jt_time,gbc);
jp.add(jt_time);
jt_time.setEditable(false);//jt_time不可编辑
//设置控件IP的位置
gbc.fill=GridBagConstraints.BOTH;
gbc.anchor=GridBagConstraints.NORTH;
gbc.gridx=1;
gbc.gridy=3;
gb.setConstraints(jl_ip,gbc);
jp.add(jl_ip);
//设置控件IP的位置
gbc.fill=GridBagConstraints.BOTH;
gbc.anchor=GridBagConstraints.NORTH;
gbc.gridx=3;
gbc.gridy=3;
gb.setConstraints(jt_ip,gbc);
jp.add(jt_ip);
//设置控件IP的位置
gbc.fill=GridBagConstraints.BOTH;
gbc.anchor=GridBagConstraints.NORTH;
gbc.gridx=5;
gbc.gridy=3;
gb.setConstraints(jb3,gbc);
jp.add(jb3);
//设置控件标题"显示:"的位置
gbc.fill=GridBagConstraints.BOTH;
gbc.anchor=GridBagConstraints.CENTER;
gbc.gridx=3;
gbc.gridy=8;
gb.setConstraints(jl_pw,gbc);
jp.add(jl_pw);
//设置控件信息框的位置
gbc.fill=GridBagConstraints.BOTH;
gbc.anchor=GridBagConstraints.CENTER;
gbc.gridx=3;
gbc.gridy=10;
gb.setConstraints(jta,gbc);
jp.add(jta);
//设置控件标题“发送信息:”的位置
gbc.fill=GridBagConstraints.BOTH;
gbc.anchor=GridBagConstraints.WEST;
gbc.gridx=1;
gbc.gridy=15;
gb.setConstraints(jl_name,gbc);
jp.add(jl_name);
//设置控件要发送的信息框的位置
gbc.fill=GridBagConstraints.BOTH;
gbc.anchor=GridBagConstraints.WEST;
gbc.gridx=3;
gbc.gridy=15;
gb.setConstraints(jt_name,gbc);
jp.add(jt_name);
//设置控件按钮"发送"的位置
gbc.fill=GridBagConstraints.BOTH;
gbc.anchor=GridBagConstraints.WEST;
gbc.gridx=5;
gbc.gridy=15;
gb.setConstraints(jb,gbc);
jp.add(jb);
//设置控件按钮"清空"的位置
gbc.fill=GridBagConstraints.BOTH;
gbc.anchor=GridBagConstraints.WEST;
gbc.gridx=7;
gbc.gridy=15;
gb.setConstraints(jb2,gbc);
jp.add(jb2);
setSize(600,500);
setVisible(true);
//======初始化时间线程
A a=new A();
a.start();
}//构造函数结束
//============================================================
//聊天线程
public void run()
{
try
{
while(true)
{
BufferedReader receive=new BufferedReader(new InputStreamReader(client.getInputStream()));
String str=receive.readLine();
jta.append("\n Server:"+str+" "+strTime);
}
}
catch(Exception e)
{
System.out.println("发送信息给服务器错误");
}
}
//=======按钮事件代码
public void actionPerformed(ActionEvent e)
{
Object obj=e.getSource();
if(obj==jb)
{
if (jt_name.getText().length()==0)
{
JOptionPane.showMessageDialog(null,"发送信息不能为空");//弹出消息框
return;
}
if (jt_name.getText().length()!=0)
{
try
{
String str1=jt_name.getText();
jta.append("\n Client:"+str1+" "+strTime);
PrintStream bw=new PrintStream(client.getOutputStream());
bw.println(str1);
}
catch(Exception ee)
{
System.out.println("发送信息给自己错误!");
}
}
}
if (obj==jb2)
{
jt_name.setText("");
}
if (obj==jb3)
{
if (jt_ip.getText().length()!=0)
{
ip=jt_ip.getText();//存取地址
//========开辟一个聊天端口
try
{
client=new Socket(ip,1001);
}
catch(Exception e1)
{
System.out.println("连接错误!");
}
//======初始化聊天线程
th=new Thread(this);
th.start();
}
else
{
JOptionPane.showMessageDialog(null,"IP不能为空!");//弹出消息框
return;
}
}
jt_ip.setEditable(false);
jb3.setEnabled(false);
}//聊天线程结束
//========================================================
//设置时间线程
class A extends Thread
{
public void run()
{
while(true)
{
display();//调用下面的成员函数
try
{
th.sleep(1000);//休眠一秒钟
}
catch(Exception e)
{
System.out.println("时间线程错误!");
}
}
}
}
public void display()
{
Font f=new Font("Times new Roman",Font.BOLD,14);
jt_time.setFont(f);
jt_time.setForeground(Color.blue);
date=new Date();
calendar=new GregorianCalendar();
calendar.setTime(date);
strTime=calendar.get(Calendar.HOUR)+":"+calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND);
strDate=(calendar.get(Calendar.MONTH)+1)+"/"+calendar.get(Calendar.DATE)+"/"+calendar.get(Calendar.YEAR);
strStatus=strTime+" "+strDate;
//getAppletContext().showStatus(strStatus);
jt_time.setText(strStatus);
}//时间线程结束
//============================================主函数
public static void main(String[] args)
{
new liao();
}//主函数结束
}//整个公有类结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -