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

📄 jgrouppanel.java

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

	/**
	 * 取得全部组名
	 * 
	 * @return String[]
	 */
	public String[] getGroupNames() {
		String sResult[] = new String[getGroupCount()];
		for (int i = 0; i < getGroupCount(); i++) {
			sResult[i] = getGroupName(i);
		}
		return sResult;
	}

	/**
	 * 取得当前组的总数
	 * 
	 * @return int
	 */
	public int getGroupCount() {
		return groupList.size();
	}

	/**
	 * 往组中添加成员组件
	 * 
	 * @param groupIndex
	 *            int 组的顺序号
	 * @param member
	 *            Component 成员组件
	 */
	public void addMember(int groupIndex, Component member) {
		getGroup(groupIndex).addMember(getGroup(groupIndex).getMemberCount(),
				member);
	}

	/**
	 * 往组中插入成员组件
	 * 
	 * @param groupIndex
	 *            int 组的顺序号
	 * @param memberIndex
	 *            int 插入的顺序号
	 * @param member
	 *            Component 成员组件
	 */
	public void insertMember(int groupIndex, int memberIndex, Component member) {
		getGroup(groupIndex).addMember(memberIndex, member);
	}

	/**
	 * 从组中移除成员组件
	 * 
	 * @param groupIndex
	 *            int
	 * @param memberIndex
	 *            int
	 */
	public void removeMember(int groupIndex, int memberIndex) {
		getGroup(groupIndex).removeMember(memberIndex);
	}

	/**
	 * 取得成员组件
	 * 
	 * @param groupIndex
	 *            int 组的顺序号
	 * @param memberIndex
	 *            int 成员组件的顺序号
	 * @return Component 成员组件
	 */
	public Component getMember(int groupIndex, int memberIndex) {
		return getGroup(groupIndex).getMember(memberIndex);
	}

	/**
	 * 取得全部成员组件
	 * 
	 * @param groupIndex
	 *            int 组的顺序号
	 * @return Component[] 全部成员组件
	 */
	public Component[] getMembers(int groupIndex) {
		return getGroup(groupIndex).getMembers();
	}

	/**
	 * 取得成员组件的总数
	 * 
	 * @param groupIndex
	 *            int 组的顺序号
	 * @return int 总数
	 */
	public int getMemberCount(int groupIndex) {
		return getGroup(groupIndex).getMemberCount();
	}

	/**
	 * 取得组
	 * 
	 * @param index
	 *            int 组的顺序号
	 * @return JGroupContainer 组
	 */
	protected JGroupContainer getGroup(int index) {
		return (JGroupContainer) groupList.get(index);
	}

	/**
	 * 覆写的addImpl方法,禁止再向JGroupPane中添加组件
	 * 
	 * @param comp
	 *            Component
	 * @param constraints
	 *            Object
	 * @param index
	 *            int
	 */
	protected void addImpl(Component comp, Object constraints, int index) {
		if (forbidFlag) {
			if (!(comp instanceof JGroupContainer)) {
				throw new UnsupportedOperationException(
						"JGroupPane can't add component!");
			}
		} else {
			super.addImpl(comp, constraints, index);
		}
	}

	/**
	 * <p>
	 * Title: OpenSwing
	 * </p>
	 * <p>
	 * Description: 组面板布局管理器
	 * </p>
	 * <p>
	 * Copyright: Copyright (c) 2004
	 * </p>
	 * <p>
	 * Company:
	 * </p>
	 * 
	 * @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a>
	 * @version 1.0
	 */
	class GroupLayout implements LayoutManager, java.io.Serializable {
		int vgap = 0;

		int hgap = 0;

		public GroupLayout() {
		}

		public GroupLayout(int hg, int vg) {
			this.hgap = hg;
			this.vgap = vg;
		}

		public void addLayoutComponent(String name, Component comp) {
		}

		public void removeLayoutComponent(Component comp) {
		}

		public Dimension preferredLayoutSize(Container parent) {
			synchronized (parent.getTreeLock()) {
				Insets insets = parent.getInsets();
				int ncomponents = parent.getComponentCount();
				int w = 0;
				int h = 0;
				for (int i = 0; i < ncomponents; i++) {
					Component comp = parent.getComponent(i);
					Dimension d = comp.getPreferredSize();
					if (w < d.width) {
						w = d.width;
					}
					h += d.height + vgap;
				}
				return new Dimension(insets.left + insets.right + w + 2 * hgap,
						insets.top + insets.bottom + h + 2 * vgap);
			}
		}

		public Dimension minimumLayoutSize(Container parent) {
			return preferredLayoutSize(parent);
		}

		public void layoutContainer(Container parent) {
			synchronized (parent.getTreeLock()) {
				Insets insets = parent.getInsets();
				int ncomponents = parent.getComponentCount();
				if (ncomponents == 0) {
					return;
				}
				int y = insets.top + vgap;
				for (int c = 0; c < ncomponents; c++) {
					int h = parent.getComponent(c).getPreferredSize().height;
					parent.getComponent(c).setBounds(
							insets.left + hgap,
							y,
							parent.getWidth() - insets.left - insets.right - 2
									* hgap, h);
					y += h + vgap;
				}
			}
		}

		public String toString() {
			return getClass().getName();
		}
	}

	/**
	 * <p>
	 * Title: OpenSwing
	 * </p>
	 * <p>
	 * Description: 组
	 * </p>
	 * <p>
	 * Copyright: Copyright (c) 2004
	 * </p>
	 * <p>
	 * Company:
	 * </p>
	 * 
	 * @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a>
	 * @version 1.0
	 */
	class JGroupContainer extends JPanel {
		private JButton bttGroupTitle = new JButton();

		private JPanel pMembers = new JPanel();

		private JScrollPane sp;

		public JGroupContainer() {
			this("");
		}

		public JGroupContainer(String name) {
			this(name, UIManager.getColor("Desktop.background"));
		}

		/**
		 * @param name
		 *            String 组名
		 * @param background
		 *            Color 成员组件所在面板背景色
		 */
		public JGroupContainer(String name, Color background) {
			bttGroupTitle.setText(name);
			bttGroupTitle.setFocusable(false);
			pMembers.setLayout(new GroupLayout(5, 5));
			this.setLayout(new BorderLayout());
			this.add(bttGroupTitle, BorderLayout.NORTH);

			pMembers.setBackground(background);

			Color thumbColor = UIManager.getColor("ScrollBar.thumb");
			Color trackColor = UIManager.getColor("ScrollBar.track");
			Color trackHighlightColor = UIManager
					.getColor("ScrollBar.trackHighlight");

			UIManager.put("ScrollBar.thumb", background);
			UIManager.put("ScrollBar.track", background);
			UIManager.put("ScrollBar.trackHighlight", background);
			sp = new JScrollPane(pMembers);
			sp
					.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
			this.add(sp, BorderLayout.CENTER);
			collapse();
			UIManager.put("ScrollBar.thumb", thumbColor);
			UIManager.put("ScrollBar.track", trackColor);
			UIManager.put("ScrollBar.trackHighlight", trackHighlightColor);

		}

		/**
		 * 设置间距
		 * 
		 * @param hgap
		 *            int 横间距
		 * @param vgap
		 *            int 竖间距
		 */
		public void setMemberGap(int hgap, int vgap) {
			pMembers.setLayout(new GroupLayout(hgap, vgap));
		}

		/**
		 * 取得组的标题按钮
		 * 
		 * @return JButton
		 */
		public JButton getTitleButton() {
			return bttGroupTitle;
		}

		/**
		 * 取得组的成员组件面板
		 * 
		 * @return JPanel
		 */
		public JPanel getMembersContainer() {
			return pMembers;
		}

		/**
		 * 收缩组
		 */
		public void collapse() {
			sp.setVisible(false);
			this.revalidate();
		}

		/**
		 * 展开组
		 */
		public void expand() {
			sp.setVisible(true);
			this.revalidate();
		}

		/**
		 * 设置组名
		 * 
		 * @param name
		 *            String 组名
		 */
		public void setName(String name) {
			bttGroupTitle.setText(name);
		}

		/**
		 * 取得组名
		 * 
		 * @return String
		 */
		public String getName() {
			return bttGroupTitle.getText();
		}

		/**
		 * 添加一个成员组件
		 * 
		 * @param index
		 *            int 顺序号
		 * @param c
		 *            Component 成员组件
		 */
		public void addMember(int index, Component c) {
			pMembers.add(c, index);
			pMembers.doLayout();
		}

		/**
		 * 删除一个成员组件
		 * 
		 * @param index
		 *            int 顺序号
		 */
		public void removeMember(int index) {
			pMembers.remove(index);
			pMembers.doLayout();
		}

		/**
		 * 取得一个成员组件
		 * 
		 * @param index
		 *            int 顺序号
		 * @return Component 成员组件
		 */
		public Component getMember(int index) {
			return pMembers.getComponent(index);
		}

		/**
		 * 取得全部成员组件
		 * 
		 * @return Component[] 成员组件
		 */
		public Component[] getMembers() {
			Component coms[] = new Component[getMemberCount()];
			for (int i = 0; i < coms.length; i++) {
				coms[i] = pMembers.getComponent(i);
			}
			return coms;
		}

		/**
		 * 取得成员组件总数
		 * 
		 * @return int 总数
		 */
		public int getMemberCount() {
			return pMembers.getComponentCount();
		}

		/**
		 * 重写的toString方法
		 * 
		 * @return String
		 */
		public String toString() {
			return getName();
		}
	}

	// /**
	// /**
	// * 测试程序
	// * @param args String[]
	// */
//	public static void main(String[] args) {
//		JFrame frame = new JFrame("JGroupPanel Demo");
//		frame.getContentPane().setLayout(new BorderLayout());
//		frame.getContentPane().add(new JGroupPanel(), BorderLayout.CENTER);
//		frame.setSize(150, 600);
//		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
//		frame.setLocation(d.width - frame.getSize().width - 10, 10);
//		frame.setVisible(true);
//	}
}

⌨️ 快捷键说明

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