ChatingRoomProject/ChatingRoom.java

171 lines
5.8 KiB
Java
Raw Normal View History

2025-09-17 08:38:41 +00:00
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) {
}
}
}
}