⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serverframe.java

📁 java局域网聊天室
💻 JAVA
字号:
package chatnew;

import java.awt.BorderLayout;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: </p>
 *
 * @author 乔聪
 * @version 1.0
 */
public class ServerFrame extends JFrame {


    Server server =null;



    BorderLayout borderLayout1 = new BorderLayout();
    JPanel jPanel1 = new JPanel();
    JPanel jPanel2 = new JPanel();
    JPanel jPanel3 = new JPanel();
    JPanel jPanel4 = new JPanel();
    JPanel jPanel5 = new JPanel();
    JLabel jLabel2 = new JLabel();
    JTextField jport = new JTextField();
    JButton jButton1 = new JButton();
    JButton jButton2 = new JButton();
    JLabel jLabel3 = new JLabel();
    List list1 = new List();
    BorderLayout borderLayout2 = new BorderLayout();
    JTextField jnickname = new JTextField();
    JButton jButton3 = new JButton();
    JButton jButton4 = new JButton();
    BorderLayout borderLayout3 = new BorderLayout();
    JPanel jPanel6 = new JPanel();
    JButton jButton5 = new JButton();
    JButton jButton6 = new JButton();
    GridLayout gridLayout1 = new GridLayout();
    List list2 = new List();
    BorderLayout borderLayout4 = new BorderLayout();
    JTextField jsend = new JTextField();
    JButton jButton7 = new JButton();
    JButton jButton8 = new JButton();
    JCheckBox jCheckBox1 = new JCheckBox();

    public ServerFrame() {
        try {
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

    private void jbInit() throws Exception {
        getContentPane().setLayout(borderLayout1);
        jButton1.setMnemonic('Q');
        jButton2.setMnemonic('C');
        jButton6.setMnemonic('S');
        jButton5.setMnemonic('V');
        jButton4.setMnemonic('T');
        jButton3.setMnemonic('N');
        jsend.setText("莫谈国事");
        jsend.setColumns(40);
        jsend.addActionListener(new ServerFrame_jsend_actionAdapter(this));
        jButton7.setMnemonic('F');
        jButton7.setText("发送(F)");
        jButton7.addActionListener(new ServerFrame_jButton7_actionAdapter(this));
        jLabel2.setText("端口:");
        jport.setText("9999");
        jport.setColumns(5);
        jButton1.setText("启动服务(Q)");
        jButton1.addActionListener(new ServerFrame_jButton1_actionAdapter(this));
        jButton2.setText("关闭服务(C)");
        jButton2.addActionListener(new ServerFrame_jButton2_actionAdapter(this));
        jLabel3.setText("在线用户列表:");
        jPanel2.setLayout(borderLayout2);
        jnickname.setText("小松鼠");
        jnickname.setColumns(5);
        jButton3.setText("修改昵称(N)");
        jButton3.addActionListener(new ServerFrame_jButton3_actionAdapter(this));
        jButton4.setText("断开连接(T)");
        jButton4.addActionListener(new ServerFrame_jButton4_actionAdapter(this));
        jPanel4.setLayout(borderLayout3);
        jButton5.setText("查看(V)");
        jButton5.addActionListener(new ServerFrame_jButton5_actionAdapter(this));
        jButton6.setText("保存(S)");
        jButton6.addActionListener(new ServerFrame_jButton6_actionAdapter(this));
        jPanel6.setLayout(gridLayout1);
        gridLayout1.setColumns(1);
        gridLayout1.setRows(3);
        jPanel5.setLayout(borderLayout4);
        jButton8.setMnemonic('C');
        jButton8.setText("清空(C)");
        jButton8.addActionListener(new ServerFrame_jButton8_actionAdapter(this));
        jCheckBox1.setSelected(true);
        jCheckBox1.setText("对所有人");
        jPanel1.add(jLabel2);
        jPanel1.add(jport);
        jPanel1.add(jButton1);
        jPanel1.add(jButton2);
        this.getContentPane().add(jPanel2, java.awt.BorderLayout.WEST);
        jPanel2.add(list1, java.awt.BorderLayout.CENTER);
        this.getContentPane().add(jPanel3, java.awt.BorderLayout.SOUTH);
        jPanel3.add(jnickname);
        jPanel3.add(jButton3);
        jPanel3.add(jButton4);
        jPanel3.add(jsend);
        jPanel3.add(jButton7);
        this.getContentPane().add(jPanel4, java.awt.BorderLayout.EAST);
        jPanel6.add(jButton6, null);
        jPanel6.add(jButton8);
        jPanel6.add(jButton5, null);
        jPanel4.add(jPanel6, java.awt.BorderLayout.NORTH);
        this.getContentPane().add(jPanel5, java.awt.BorderLayout.CENTER);
        jPanel5.add(list2, java.awt.BorderLayout.CENTER);
        this.getContentPane().add(jPanel1, java.awt.BorderLayout.NORTH);
        jPanel2.add(jLabel3, java.awt.BorderLayout.NORTH);
        jPanel2.add(jCheckBox1, java.awt.BorderLayout.SOUTH);
        this.setTitle("聊天室服务器端");
        this.setSize(850,650);
        this.setLocation(100,100);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        ServerFrame clientframe = new ServerFrame();
    }

    public void jButton1_actionPerformed(ActionEvent e) {

        try {
            server = new Server(Integer.parseInt(jport.getText()), list1,
                                       list2);
            list2.add("服务器成功启动");
        } catch (NumberFormatException ex) {
            JOptionPane.showMessageDialog(this,"端口号应该输入数字!","提示",JOptionPane.ERROR_MESSAGE);
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(this,"启动服务器时出现错误,请检查并重新启动!","提示",JOptionPane.ERROR_MESSAGE);
            ex.printStackTrace();
        }
    }

    public void jButton2_actionPerformed(ActionEvent e) {
        server.destroy();
        list2.add("服务器成功关闭");
    }

    public void jButton8_actionPerformed(ActionEvent e) {
        if(JOptionPane.showConfirmDialog(this,"确定要清空所有信息吗?","清空信息",JOptionPane.YES_NO_OPTION)==0){
            this.list2.removeAll();
        }

    }

    public void jButton7_actionPerformed(ActionEvent e) {
        if(jsend.getText().length()>0){
            try {
                //判断是给所有人发还是只给指定的客户端发
                if(jCheckBox1.isSelected()){
                    this.server.send(jsend.getText());
                }else{
                    if(list1.getSelectedItem()==null){
                        JOptionPane.showMessageDialog(this,"请选择要发送信息的用户,或者选中“对所有人”按钮!","提示",JOptionPane.ERROR_MESSAGE);
                    }else{
                        this.server.send("SPECIAL:"+list1.getSelectedItem()+"$SPECIAL$"+jsend.getText());
                        this.list2.add("系统管理员 悄悄对 "+list1.getSelectedItem()+" 说:"+jsend.getText());
                    }
                }
            } catch (IOException ex) {
                this.list2.add("发送广播时出错!");
            }
        }
    }

    public void jsend_actionPerformed(ActionEvent e) {
        if(jsend.getText().length()>0){
            try {
                //判断是给所有人发还是只给指定的客户端发
                if(jCheckBox1.isSelected()){
                    this.server.send(jsend.getText());
                }else{
                    if(list1.getSelectedItem()==null){
                        JOptionPane.showMessageDialog(this,"请选择要发送信息的用户,或者选中“对所有人”按钮!","提示",JOptionPane.ERROR_MESSAGE);
                    }else{
                        this.server.send("SPECIAL:"+list1.getSelectedItem()+"$SPECIAL$"+jsend.getText());
                        this.list2.add("系统管理员 悄悄对 "+list1.getSelectedItem()+" 说:"+jsend.getText());
                    }
                }
            } catch (IOException ex) {
                this.list2.add("发送广播时出错!");
            }
        }
    }
    //强制修改用户昵称
    public void jButton3_actionPerformed(ActionEvent e) {
        if(list1.getSelectedItem()==null){
            JOptionPane.showMessageDialog(this,"请先选择要修改昵称的客户!","提示",JOptionPane.ERROR_MESSAGE);
        }else if(jnickname.getText().length()<1){
            JOptionPane.showMessageDialog(this,"请先输入修改后的昵称!","提示",JOptionPane.ERROR_MESSAGE);
        }else{
            this.server.changeNickname(list1.getSelectedItem(),jnickname.getText());
        }
    }

    public void jButton4_actionPerformed(ActionEvent e) {
        if(list1.getSelectedItem()==null){
            JOptionPane.showMessageDialog(this,"请先选择要断开连接的客户端!","提示",JOptionPane.ERROR_MESSAGE);
        }else{
            if(JOptionPane.showConfirmDialog(this,"确定要踢掉该用户吗?","提示",JOptionPane.YES_NO_OPTION)==0){
                server.tickSocket(list1.getSelectedItem());
            }
        }
    }

    public void jButton6_actionPerformed(ActionEvent e) {
        JFileChooser fileSave=new JFileChooser();
        if(fileSave.showSaveDialog(this)==JFileChooser.APPROVE_OPTION){
            File file = fileSave.getSelectedFile();
            try {
                PrintStream ps = new PrintStream(new FileOutputStream(file));
                for (int i = 0; i < list2.getItemCount(); i++) {
                    ps.println(list2.getItem(i));
                }
                ps.close();
            } catch (FileNotFoundException ex) {
                JOptionPane.showMessageDialog(this, "保存失败!", "提示",
                                              JOptionPane.ERROR_MESSAGE);
            }
            JOptionPane.showMessageDialog(this, "保存成功!", "提示",
                                          JOptionPane.ERROR_MESSAGE);
        }
    }

    public void jButton5_actionPerformed(ActionEvent e) {
        JFileChooser fileOpen=new JFileChooser();
        if(fileOpen.showOpenDialog(this)==JFileChooser.APPROVE_OPTION){
            File file = fileOpen.getSelectedFile();
            try {
                BufferedReader br = new BufferedReader(new FileReader(file));
                String s = "";
                while ((s = br.readLine()) != null) {
                    list2.add(s);
                }
                br.close();
                //list2.select(list2.getItemCount()-1);
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(this, "打开失败!", "提示",
                                              JOptionPane.ERROR_MESSAGE);
            }
            //JOptionPane.showMessageDialog(this,"打开成功!","提示",JOptionPane.ERROR_MESSAGE);
        }
    }
}


class ServerFrame_jButton5_actionAdapter implements ActionListener {
    private ServerFrame adaptee;
    ServerFrame_jButton5_actionAdapter(ServerFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jButton5_actionPerformed(e);
    }
}


class ServerFrame_jButton6_actionAdapter implements ActionListener {
    private ServerFrame adaptee;
    ServerFrame_jButton6_actionAdapter(ServerFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jButton6_actionPerformed(e);
    }
}


class ServerFrame_jButton4_actionAdapter implements ActionListener {
    private ServerFrame adaptee;
    ServerFrame_jButton4_actionAdapter(ServerFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jButton4_actionPerformed(e);
    }
}


class ServerFrame_jButton3_actionAdapter implements ActionListener {
    private ServerFrame adaptee;
    ServerFrame_jButton3_actionAdapter(ServerFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jButton3_actionPerformed(e);
    }
}


class ServerFrame_jsend_actionAdapter implements ActionListener {
    private ServerFrame adaptee;
    ServerFrame_jsend_actionAdapter(ServerFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jsend_actionPerformed(e);
    }
}


class ServerFrame_jButton7_actionAdapter implements ActionListener {
    private ServerFrame adaptee;
    ServerFrame_jButton7_actionAdapter(ServerFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jButton7_actionPerformed(e);
    }
}


class ServerFrame_jButton8_actionAdapter implements ActionListener {
    private ServerFrame adaptee;
    ServerFrame_jButton8_actionAdapter(ServerFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jButton8_actionPerformed(e);
    }
}


class ServerFrame_jButton2_actionAdapter implements ActionListener {
    private ServerFrame adaptee;
    ServerFrame_jButton2_actionAdapter(ServerFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jButton2_actionPerformed(e);
    }
}


class ServerFrame_jButton1_actionAdapter implements ActionListener {
    private ServerFrame adaptee;
    ServerFrame_jButton1_actionAdapter(ServerFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jButton1_actionPerformed(e);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -