ChatingRoomProject/ChatingRoom.java

171 lines
5.8 KiB
Java
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package 大作业;
import javax.swing.JFrame;
import java.awt.GridBagLayout;
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.event.*;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
public class ChatingRoom extends JFrame implements Runnable{
public JTextArea chat_Frame=new JTextArea();
private JScrollPane pane1=new JScrollPane(chat_Frame);
private JTextArea edit_Text=new JTextArea();
private JScrollPane pane2=new JScrollPane(edit_Text);
private JButton sent_Button=new JButton("发送");
private JButton return_Button=new JButton("退出聊天室");
public String text;
public String Name;
private String Ip;
private int option;
public boolean isClose;
public boolean alsent;
public ChatingRoom(String name,String IP,int option){
Name=name;
Ip=IP;
this.option=option;
isClose=false;
return_Button.setBackground(Color.red);
chat_Frame.setBorder(null);
chat_Frame.setOpaque(false);
pane1.setBorder(null);
pane1.setOpaque(false);
chat_Frame.setEditable(false);
setSize(800, 500);setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);setLocationRelativeTo(null);
setLayout(new GridBagLayout());
GridBagConstraints c=new GridBagConstraints();
c.fill=GridBagConstraints.HORIZONTAL;
c.gridx=0;c.gridy=0;
c.gridwidth=2;
c.ipady=200;
add(pane1, c);
c.gridx=0;c.gridy=1;
c.gridwidth=2;
c.weightx=3;c.weighty=3;
c.ipady=100;
add(pane2, c);
c.gridx=0;c.gridy=2;
c.gridwidth=1;
c.weightx=1;c.weighty=1;
c.ipady=10;
add(sent_Button, c);
c.gridx=1;c.gridy=2;
c.gridwidth=1;
c.weightx=1;c.weighty=1;
c.ipady=10;
add(return_Button, c);
return_Button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
Log_In_frame log_In_frame=new Log_In_frame();
log_In_frame.setTitle("登录界面");
log_In_frame.setVisible(true);
isClose=true;
dispose();
}
});
if(option==2){
sent_Button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
chat_Frame.append(text+'\n');
edit_Text.setText("");
}
});
}else if(option==1){
sent_Button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
edit_Text.setText("");
}
});
}
}
public void run(){
if (option==2){
setVisible(true);
final int PORT=3030;
ServerSocket s=null;
try{
s=new ServerSocket(PORT);
System.out.println("启动服务器"+'\n'+s);
Socket socket=null;
while (true) {
try {
socket=s.accept();
ServerWorker serverWorker=new ServerWorker(socket,this);
ServerManager.getServetManager().add(serverWorker);
sent_Button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
text=Name+" "+edit_Text.getText();
alsent=true;
serverWorker.out.println(text);
}
});
} catch (IOException e1) {
System.out.println(e1);
System.out.println("获取客户端Scoket异常");
}
return_Button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
ServerManager.getServetManager().publishall(Name+"退出聊天室"+'\n'+"聊天室关闭");
}
});
}
} catch (IOException e1) {
System.out.println(e1);
System.out.println("ServerSocket创建异常");
} finally{
try {
if(s!=null)
s.close();
} catch (IOException e1) {
System.out.println(e1);
System.out.println("ServerSocket关闭异常");
}
}
}
if(option==1){
setVisible(true);
try {
InetAddress addr=InetAddress.getByName(Ip);
CilentSocketMultThread cilentSocketMultThread=new CilentSocketMultThread(addr, this);
sent_Button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
text=Name+" "+edit_Text.getText();
alsent=true;
// edit_Text.setText("");
cilentSocketMultThread.out.println(text);
}
});
return_Button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
cilentSocketMultThread.out.println(Name+"退出了聊天室");
}
});
} catch (IOException e1) {
}
}
}
}