📄 servergui.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 + -