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) { } } } }