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

📄 servergui.java

📁 一个采用Java Socket编程实现的QQ软件
💻 JAVA
字号:
package serverwork;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;
public class serverGUI extends JFrame implements ActionListener{
    private Server server;
    JPanel panel1,panel2,panel3;
    JList  list1, list2;    
    JTextArea text1;
    JButton button1,button2;
    DefaultListModel model1=null;
    DefaultListModel model2=null;
    String notice;
    
    public serverGUI(Server server){                  //产生服务器端的图形界面,用户发布消息和发布在线和不在线的用户
        super("聊天服务器");
        this.server = server;
        model1 = new DataModel(1,server);
        model2 = new DataModel(2,server);
        panel1 = new JPanel();
        panel2 = new JPanel();
        panel3 = new JPanel();
        list1 = new JList(model1);
        list2 = new JList(model2);
        text1 = new JTextArea();
        button1 = new JButton("全用户");
        button2 = new JButton("在线用户");
        button1.addActionListener(this);
        button2.addActionListener(this);
        
        list1.setBorder(BorderFactory.createTitledBorder("在线用户"));
        list2.setBorder(BorderFactory.createTitledBorder("离线用户"));
        panel2.setBorder(BorderFactory.createTitledBorder("公告发布"));
        panel3.setBorder(BorderFactory.createTitledBorder("公告对象"));
        panel1.setLayout(new GridLayout(1,2));
        panel1.add(new JScrollPane(list1));
        panel1.add(new JScrollPane(list2));
        
        panel2.setLayout(new GridLayout(1,2));
        panel2.add(new JScrollPane(text1));
        panel3.add(button1);
        panel3.add(button2);
        panel2.add(panel3);
        panel1.setPreferredSize(new Dimension (400, 400));
        panel2.setPreferredSize(new Dimension (400, 85));
            	
        //this.setLayout (new BoxLayout (this, BoxLayout.Y_AXIS));
        //this.setLayout(new GridLayout(2,1));
        this.setLayout(new BorderLayout());
        this.add(panel1,"Center");
        this.add(panel2,"South");
        this.setSize(400,300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = this.getSize();
        this.setLocation((d.width - frameSize.width) / 2,
                (d.height - frameSize.height) / 2);       
    }
    
    public void actionPerformed(ActionEvent arg0) {
        if(arg0.getSource() == button1){               //发送的是全网广播
            notice = text1.getText();
            text1.setText("");
            sentdataonline(notice);
            sentdatadownline(notice);
        }
        if(arg0.getSource() == button2){               //发送给在线用户
            notice = text1.getText();            
            text1.setText("");
            sentdataonline(notice);
        }                
    }
    public void onlineuser(String username,String message){         //有用户上线时,更新界面显示
        model1.addElement(username + "  ip:" + message);       
        model2.removeElement(username);
    }
    public void downlineuser(String username){                     //由用户下线后更新界面显示		System.out.println("此处已处理");
        model2.addElement(username);
        model1.removeElement(username+"  ip:"+server.getonlineuser().get(username));       
        System.out.println(username+"  ip:"+server.getonlineuser().get(username));
    }
    public void sentdataonline(String message){                   //向在线用户发送广播信息
        for(int i=0; i< server.getvectoronline().size(); i++){
            String username = (String)server.getvectoronline().get(i);		
            server.sum.sentdata(username,"通知:"+message);
        }
    }
    public void sentdatadownline(String message){                //向下线用发送广播信息
        for(int i=0; i< server.getvectordownline().size(); i++){
            String username = (String)server.getvectoronline().get(i);
            server.getdownlinuser().remove(username);
            server.getdownlinuser().put(username, message);
        }
    }
}



⌨️ 快捷键说明

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