📄 managerpanel.java
字号:
package com.softfz.jn0708.main.manager;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.net.ServerSocket;
import java.util.List;
import java.util.Set;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextPane;
import javax.swing.ListSelectionModel;
import javax.swing.border.Border;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import com.softfz.jn0708.dao.intef.IUserDAO;
import com.softfz.jn0708.dao.oracle.ImplementUserDAO;
import com.softfz.jn0708.main.QQServerAppFrame;
import com.softfz.jn0708.mvc.MyTableModel;
import com.softfz.jn0708.util.Tools;
/**
* 服务器管理面板
*/
public class ManagerPanel extends JPanel {
private static final long serialVersionUID = 3817446421298570008L;
private MyTableModel model;
private JButton btnStart = new JButton("启动服务器");//启动服务器
private JButton btnStop = new JButton("停止服务器");//停止服务器
private JButton btnDown = new JButton("强制用户下线");//强制用户下线
private JButton btnNote = new JButton("发送公告");//发送公告
private JTextPane jtpNote = new JTextPane();
private JTextPane infor = new JTextPane();
private JPanel jplEdit = new JPanel();
private JPanel jplNotet = new JPanel();
private JPanel jplInfo = new JPanel();
private ServerSocket server;
private Set totalThread ;//= new HashSet();
private JScrollPane jspinfor ;
private JScrollPane jspnote ;
private JTable tblUser ;
private QQServerAppFrame qqframe;
private MyManagerListener mymanlistener;
private String selectedUno;
private String selectedUtirm;
/**
* 构造
* @param qqframe 服务器主窗体
* @param server 服务socket
* @param totalThread 保存线程的hashset变量
*/
public ManagerPanel(QQServerAppFrame qqframe,ServerSocket server, Set totalThread){
Tools.setFont(new Font("宋体", Font.PLAIN, 13));
this.qqframe = qqframe;
this.server = server;
this.totalThread = totalThread;
btnStart.setEnabled(true);
btnStop.setEnabled(false);
btnDown.setEnabled(false);
IUserDAO userDao = new ImplementUserDAO();
List data = userDao.getOnlineRowData();//获取行数据
model = new MyTableModel(userDao.getOnlineColumnNames(), data);//MVC模型
tblUser = new JTable(model); //表格
tblUser.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
tblUser.getTableHeader().setReorderingAllowed(false);
tblUser.getTableHeader().setPreferredSize(new Dimension(Short.MAX_VALUE,30));
tblUser.setRowHeight(28);
tblUser.getTableHeader().setReorderingAllowed(false);
tblUser.getTableHeader().setResizingAllowed(false);
tblUser.getTableHeader().setBackground(new Color(241,250,255));
//滚动条
JScrollPane jspScroll = new JScrollPane(tblUser,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jspScroll.setPreferredSize(new Dimension(570,200));
jspScroll.setMinimumSize(new Dimension(570,200));
jspScroll.setMaximumSize(new Dimension(1024,505));
jspScroll.setBackground(Color.WHITE);
Border line = BorderFactory.createLineBorder(new Color(144,185,213));
Border border = BorderFactory.createTitledBorder(line,"公告");
Border border2 = BorderFactory.createTitledBorder(line,"当前操作:");
jplEdit.setBackground(new Color(241,250,255));
jplEdit.setPreferredSize(new Dimension(570,140));
jplEdit.setMinimumSize(new Dimension(570,140));
jplEdit.setMaximumSize(new Dimension(1024,140));
jplEdit.setLayout(new BoxLayout(jplEdit,BoxLayout.X_AXIS));
//公告面板
jplNotet.setBackground(new Color(241,250,255));
jplNotet.setPreferredSize(new Dimension(270,140));
jplNotet.setMinimumSize(new Dimension(270,140));
jplNotet.setMaximumSize(new Dimension(524,140));
jplNotet.setBorder(border);
//信息面板
jplInfo.setBackground(new Color(241,250,255));
jplInfo.setPreferredSize(new Dimension(300,140));
jplInfo.setMinimumSize(new Dimension(300,140));
jplInfo.setMaximumSize(new Dimension(500,140));
jplInfo.setBorder(border2);
jspinfor = new JScrollPane(infor,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jspinfor.setPreferredSize(new Dimension(275,110));
jspinfor.setMaximumSize(new Dimension(485,110));
jspinfor.setBackground(Color.WHITE);
jspnote = new JScrollPane(jtpNote,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jspinfor.setPreferredSize(new Dimension(275,110));
jspinfor.setMaximumSize(new Dimension(505,110));
// jspinfor.setMaximumSize(new Dimension(882,95));
jspinfor.setBackground(Color.WHITE);
jtpNote.setPreferredSize(new Dimension(255,110));
jtpNote.setMaximumSize(new Dimension(505,110));
jplNotet.add(jspnote);
jtpNote.setBackground(Color.WHITE);
jtpNote.setText(" 热烈庆祝博洋教育软件试用成功!");
infor.setPreferredSize(new Dimension(285,110));
infor.setMaximumSize(new Dimension(485,110));
jplInfo.add(jspinfor);
infor.setBackground(Color.WHITE);
jplEdit.add(jplInfo);
jplEdit.add(jplNotet);
jplEdit.setBackground(new Color(241,250,255));
JPanel jplBtn = new JPanel();
jplBtn.setPreferredSize(new Dimension(570,45));
jplBtn.setMinimumSize(new Dimension(570,45));
jplBtn.setMaximumSize(new Dimension(1024,45));
jplBtn.setBackground(new Color(241,250,255));
mymanlistener = new MyManagerListener(this,server,totalThread);
btnStart.addActionListener(mymanlistener);
btnStart.setActionCommand("START");
btnStop.addActionListener(mymanlistener);
btnStop.setActionCommand("STOP");
btnDown.addActionListener(mymanlistener);
btnDown.setActionCommand("DOWN");
btnNote.addActionListener(mymanlistener);
btnNote.setActionCommand("NOTE");
jplBtn.add(btnStart);
jplBtn.add(btnStop);
jplBtn.add(btnDown);
jplBtn.add(btnNote);
//表格选中时触发的事件
tblUser.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()){
//用户强制下线管理
btnDown.setEnabled(true);
//可以获得用户所选择的行,并通过类的成员字段 myTableModel 获取到 JTable 所选择行所对应的值。
selectedUno = String.valueOf(model.getValueAt(tblUser.getSelectedRow(), 0));
selectedUtirm = String.valueOf(model.getValueAt(tblUser.getSelectedRow(), 2));
}
}
});
this.setPreferredSize(new Dimension(570,385));
this.setMinimumSize(new Dimension(570,385));
//this.setMaximumSize(new Dimension(1024,700));
this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
this.add(jspScroll);
this.add(jplEdit);
this.add(jplBtn);
this.setBackground(new Color(241,250,255));
}
/**
* 获取强制下线按钮
* @return
*/
public JButton getBtnDown() {
return btnDown;
}
/**
* 获取发送日志按钮
* @return
*/
public JButton getBtnNote() {
return btnNote;
}
/**
* 获取启动按钮
* @return
*/
public JButton getBtnStart() {
return btnStart;
}
/**
* 获取关闭按钮
* @return
*/
public JButton getBtnStop() {
return btnStop;
}
/**
* 获取日志文本域
* @return
*/
public JTextPane getJtpNote() {
return jtpNote;
}
/**
* 获取信息显示文本域
* @return
*/
public JTextPane getInfor() {
return infor;
}
/**
* 获取日志显示面板
* @return
*/
public JPanel getJplNotet() {
return jplNotet;
}
/**
* 获取用户显示表
* @return
*/
public JTable getTblUser() {
return tblUser;
}
/**
* 获取信息显示面板
* @return
*/
public JPanel getJplInfo() {
return jplInfo;
}
/**
* 获取信息显示滚动条
* @return
*/
public JScrollPane getJspinfor() {
return jspinfor;
}
/**
* 获取日志滚动条
* @return
*/
public JScrollPane getJspnote() {
return jspnote;
}
/**
* 获取表模型
* @return
*/
public MyTableModel getModel() {
return model;
}
/**
* 获取线程保存的hashset
* @return
*/
public Set getTotalThread() {
return totalThread;
}
/**
* 获取主聊天窗体
* @return
*/
public QQServerAppFrame getQqframe() {
return qqframe;
}
/**
* 获取服务socket
* @return
*/
public ServerSocket getServer() {
return server;
}
/**
* 获取按钮监听
* @return
*/
public MyManagerListener getMymanlistener() {
return mymanlistener;
}
/**
* 获取选中用户编号
* @return
*/
public String getSelectedUno() {
return selectedUno;
}
/**
* 获取选中用户昵称
* @return
*/
public String getSelectedUtirm() {
return selectedUtirm;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -