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

📄 managerpanel.java

📁 模仿腾讯QQ的
💻 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 + -