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

📄 jgrouppanel.java

📁 培训时做的学生管理系统.基于J2SE平台开发
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package cn.com.frame;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.LayoutManager;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.UIManager;

import net.infonode.tabbedpanel.TabbedPanel;
import net.infonode.tabbedpanel.titledtab.TitledTabProperties;

import cn.com.frame.action.GroupButtonListener;
import cn.com.frame.button.GroupJButton;

public class JGroupPanel extends JPanel {


	/* 用来管理组的三个容器 */
	private JPanel pNorth = new JPanel() {
	};

	private JPanel pCenter = new JPanel();

	private JPanel pSouth = new JPanel();

	/* 当前全部组的集合 */
	private ArrayList groupList = new ArrayList();

	/* 是否已禁止添加组件 */
	private boolean forbidFlag = false;

	/* 当前激活的组 */
	private JGroupContainer activeGroup = null;

	transient ActionListener al = new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			JButton bttTitle = (JButton) e.getSource();
			expandGroup((JGroupContainer) bttTitle.getParent());
		}
	};

	private boolean hasCreateDefaultGroup = false;

	private Test test;
	
	private TabbedPanel tp;
	
	private TitledTabProperties titledTabProperties;
	
	public JGroupPanel(TitledTabProperties titledTabProperties, Test test,
			TabbedPanel tp) {
		this.titledTabProperties = titledTabProperties;
		this.test = test;
		this.tp = tp;
		initComponents();
		createDefaultGroup();
	}
	
//	public JGroupPanel() {
//		initComponents();
//		createDefaultGroup();
//	}

	private void initComponents() {
		this.setLayout(new BorderLayout());
		this.add(pNorth, BorderLayout.NORTH);
		this.add(pCenter, BorderLayout.CENTER);
		this.add(pSouth, BorderLayout.SOUTH);
		pNorth.setLayout(new GroupLayout());
		pCenter.setLayout(new BorderLayout());
		pSouth.setLayout(new GroupLayout());
		forbidFlag = true;
	}

	private void createDefaultGroup() {
		// Default Group
		// Color bg[] = {
		// Color.black, Color.red, Color.orange, Color.yellow, Color.green,
		// Color.cyan, Color.blue, Color.white};
		// for (int i = 1; i <= bg.length; i++) {
		// insertGroup(i - 1, "Group " + i, bg[i - 1]);
		// Color mc = new Color(255 - bg[i - 1].getRed(),
		// 255 - bg[i - 1].getGreen(),
		// 255 - bg[i - 1].getBlue());
		// for (int j = 1; j <= 5; j++) {
		// JButton bttMember = new JButton("Member " + j + " of " + i);
		// addMember(i - 1, bttMember);
		// bttMember.setPreferredSize(new Dimension(1, 40));
		// bttMember.setOpaque(false);
		// bttMember.setForeground(mc);
		// }
		// getGroup(i - 1).setMemberGap(20, 5);
		// getGroup(i - 1).getTitleButton().setForeground(bg[i - 1]);
		// }
		// String[] s = new
		// String[]{"学生基本信息管理","老师基本信息管理","课程基本信息管理","成绩基本信息管理","班级日志信息管理","系统设置"};
//		insertGroup(0, "学生基本信息管理");
//		GroupJButton bttMember01 = new GroupJButton("学生基本信息添加");
//		GroupJButton bttMember02 = new GroupJButton("学生基本信息删除");
//		GroupJButton bttMember03 = new GroupJButton("学生基本信息修改");
//		GroupJButton bttMember04 = new GroupJButton("学生基本信息查询");
//		addMember(0, bttMember01);
//		addMember(0, bttMember02);
//		addMember(0, bttMember03);
//		addMember(0, bttMember04);
//		getGroup(0).setMemberGap(20, 5);

//		insertGroup(1, "老师基本信息管理");
//		GroupJButton bttMember11 = new GroupJButton("学生基本信息添加");
//		GroupJButton bttMember12 = new GroupJButton("学生基本信息删除");
//		GroupJButton bttMember13 = new GroupJButton("学生基本信息修改");
//		GroupJButton bttMember14 = new GroupJButton("学生基本信息查询");
//		addMember(1, bttMember11);
//		addMember(1, bttMember12);
//		addMember(1, bttMember13);
//		addMember(1, bttMember14);
//		getGroup(1).setMemberGap(20, 5);
		GroupButtonListener action = new GroupButtonListener(titledTabProperties,test,tp);
		insertGroup(0, "基本信息管理");
		GroupJButton bttMember01 = new GroupJButton("学生基本信息管理");
		GroupJButton bttMember02 = new GroupJButton("老师基本信息管理");
		addMember(0, bttMember01);
		addMember(0, bttMember02);
		getGroup(0).setMemberGap(20, 5);

		insertGroup(1, "课程基本信息管理");
		GroupJButton bttMember11 = new GroupJButton("        课程设置        ");
		GroupJButton bttMember12 = new GroupJButton("        课程管理        ");
		addMember(1, bttMember11);
		addMember(1, bttMember12);
		getGroup(1).setMemberGap(20, 5);

		insertGroup(2, "成绩基本信息管理");
		GroupJButton bttMember21 = new GroupJButton("   平时成绩管理   ");
		GroupJButton bttMember22 = new GroupJButton("   考试成绩管理   ");
		addMember(2, bttMember21);
		addMember(2, bttMember22);
		getGroup(2).setMemberGap(20, 5);

		insertGroup(3, "班级日志信息管理");
		GroupJButton bttMember31 = new GroupJButton("   班级公告栏   ");
		GroupJButton bttMember32 = new GroupJButton("   班级考勤本   ");
		GroupJButton bttMember33 = new GroupJButton("   班级账务簿   ");
		addMember(3, bttMember31);
		addMember(3, bttMember32);
		addMember(3, bttMember33);
		getGroup(3).setMemberGap(20, 5);
		
		bttMember01.addActionListener(action);
		bttMember02.addActionListener(action);
		bttMember11.addActionListener(action);
		bttMember12.addActionListener(action);
		bttMember21.addActionListener(action);
		bttMember22.addActionListener(action);
		bttMember31.addActionListener(action);
		bttMember32.addActionListener(action);
		bttMember33.addActionListener(action);

//		insertGroup(4, "系统设置");
//		getGroup(4).setMemberGap(20, 5);

		expandGroup(0);
		hasCreateDefaultGroup = true;
	}

	/**
	 * @param groupNames
	 *            String[] 预设组名
	 */
	public JGroupPanel(String groupNames[]) {
		initComponents();
		addGroup(groupNames);
	}

	/**
	 * 展开组
	 * 
	 * @param name
	 *            String 组名
	 */
	public void expandGroup(String name) {
		for (int i = getGroupCount() - 1; i >= 0; i--) {
			if (getGroupName(i).equals(name)) {
				expandGroup(i);
			}
		}
	}

	/**
	 * 展开组
	 * 
	 * @param index
	 *            int 组的顺序号
	 */
	public void expandGroup(int index) {
		expandGroup(getGroup(index));
	}

	/**
	 * 展开组
	 * 
	 * @param group
	 *            JGroupContainer 组
	 */
	protected void expandGroup(JGroupContainer group) {
		pNorth.removeAll();
		pCenter.removeAll();
		pSouth.removeAll();
		boolean hasAddCenter = false;
		for (int i = 0; i < groupList.size(); i++) {
			Component c = (Component) groupList.get(i);
			if (hasAddCenter) {
				pSouth.add(c);
			} else if (c == group) {
				pCenter.add(c, BorderLayout.CENTER);
				hasAddCenter = true;
			} else {
				pNorth.add(c);
			}
		}
		if (activeGroup != null) {
			activeGroup.collapse();
		}
		activeGroup = group;
		activeGroup.expand();
		pNorth.doLayout();
		pCenter.doLayout();
		pSouth.doLayout();
		doLayout();
	}

	/**
	 * 收缩组
	 * 
	 * @param name
	 *            String 组名
	 */
	public void collapseGroup(String name) {
		for (int i = getGroupCount() - 1; i >= 0; i--) {
			if (getGroupName(i).equals(name)) {
				collapseGroup(i);
			}
		}
	}

	/**
	 * 收缩组
	 * 
	 * @param index
	 *            int 组的顺序号
	 */
	public void collapseGroup(int index) {
		collapseGroup(getGroup(index));
	}

	/**
	 * 收缩组
	 * 
	 * @param group
	 *            JGroupContainer 组
	 */
	protected void collapseGroup(JGroupContainer group) {
		if (group == activeGroup) {
			activeGroup.collapse();
			activeGroup = null;
		}
	}

	/**
	 * 添加组
	 * 
	 * @param name
	 *            String 组名
	 */
	public void addGroup(String name) {
		this.insertGroup(getGroupCount(), name);
	}

	/**
	 * 添加多个组
	 * 
	 * @param names
	 *            String[] 组名
	 */
	public void addGroup(String names[]) {
		for (int i = 0; i < names.length; i++) {
			addGroup(names[i]);
		}
	}

	/**
	 * 插入一个组
	 * 
	 * @param index
	 *            int 顺序号
	 * @param name
	 *            String 组名
	 * @param bg
	 *            Color 背景色
	 */
	public void insertGroup(int index, String name, Color bg) {
		if (index < 0 || index > groupList.size()) {
			throw new ArrayIndexOutOfBoundsException("index:" + index
					+ " >count:" + groupList.size());
		}
		if (hasCreateDefaultGroup) {
			while (getGroupCount() > 0) {
				removeGroup(0);
			}
			hasCreateDefaultGroup = false;
		}
		int countNorth = pNorth.getComponentCount();
		int countCenter = pCenter.getComponentCount();
		int countSouth = pSouth.getComponentCount();
		JGroupContainer group;
		if (index <= countNorth) {
			group = insertGroup(pNorth, index, name, bg);
		} else if (index <= countNorth + countCenter) {
			group = insertGroup(pCenter, index - countNorth, name, bg);
		} else if (index <= countNorth + countCenter + countSouth) {
			group = insertGroup(pSouth, index - countNorth - countCenter, name,
					bg);
		} else {
			group = insertGroup(pSouth, countSouth, name, bg);
		}
		group.getTitleButton().addActionListener(al);
		groupList.add(index, group);

	}

	/**
	 * 插入一个组
	 * 
	 * @param index
	 *            int 顺序号
	 * @param name
	 *            String 组名
	 */
	public void insertGroup(int index, String name) {
		insertGroup(index, name, UIManager.getColor("Desktop.background"));
	}

	/**
	 * 插入一个组
	 * 
	 * @param p
	 *            JPanel 目标面板
	 * @param index
	 *            int 顺序号
	 * @param name
	 *            String 组名
	 * 
	 * 
	 * /** 插入一个组
	 * @param p
	 *            JPanel 目标面板
	 * @param index
	 *            int 顺序号
	 * @param name
	 *            String 组名
	 * @return JGroupContainer
	 */
	private JGroupContainer insertGroup(JPanel p, int index, String name,
			Color bg) {
		JGroupContainer group = new JGroupContainer(name, bg);
		p.add(group);
		return group;
	}

	/**
	 * 删除一个组
	 * 
	 * @param index
	 *            int 顺序号
	 */
	public void removeGroup(int index) {
		JGroupContainer c = (JGroupContainer) groupList.get(index);
		c.getParent().remove(c);
		c.getTitleButton().removeActionListener(al);
	}

	/**
	 * 删除一个组
	 * 
	 * @param name
	 *            String 组名
	 */
	public void removeGroup(String name) {
		for (int i = getGroupCount() - 1; i >= 0; i--) {
			if (getGroupName(i).equals(name)) {
				this.removeGroup(i);
			}
		}
	}

	/**
	 * 设置组名
	 * 
	 * @param index
	 *            int 顺序号
	 * @param name
	 *            String 组名
	 */
	public void setGroupName(int index, String name) {
		this.getGroup(index).setName(name);
	}

	/**
	 * 取得组名
	 * 
	 * @param groupIndex
	 *            int 顺序号
	 * @return String 组名
	 */
	public String getGroupName(int groupIndex) {
		return getGroup(groupIndex).getName();

⌨️ 快捷键说明

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