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

📄 slithermenu.java

📁 △项目名称:阳光酒店管理系统 △委托单位:清华IT学习认证中心 △制作小组:华育国际 112301 班 CS结构
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/**
 *##############################################################################
 *
 *	[ 项目名      ]  : 
 *  [ 公司名      ]  : SunshineSOFT
 *	[ 模块名      ]  : 滑动菜单
 *	[ 文件名      ]  : SlitherMenu.java
 *	[ 相关文件    ]  : 
 *	[ 文件实现功能]  : 防QQ一样的滑动菜单
 *	[ 作者        ]  : 顾俊
 *	[ 版本        ]  : 1.0
 *	----------------------------------------------------------------------------
 *	[ 备注        ]  : 
 *	----------------------------------------------------------------------------
 *	[ 修改记录    ]  : 
 *
 *	[ 日  期 ]     [版本]         [修改人]         [修改内容] 
 *	2006/04/18      1.0             顾俊            创建
 *	##--------------------------------------------------------------------------
 *  			 版权所有(c) 2006-2007,  SunshineSOFT Corporation
 *	--------------------------------------------------------------------------##
 *	
 *	[ 函数说明    ]  :
 *
 *	[## public SlitherMenu() {} ]:
 *		功能: 滑动菜单的构造函数 (无部局面板)
 *
 *	[## public void addPanel(String name,String ico, int index, int quantity) {} ]:
 *		功能: 制作按键模板,并加入主模板
 *
 *	[## public void addButton(String ico, String name, String tooltip, int index) {} ]:
 *		功能: 制作功能按键,并加入相应的模板中
 *
 *	[## public void initButtonPanelDimension() {} ]:
 *		功能: 初始化每个按键模板的最大尺寸(在主窗口的setVisible()方法之前使用)
 *
 *	[## public void setInitMenu() {} ]: 
 *		功能: 设置初始化后展开第一项菜单(在主窗口的setVisible()方法之后使用)
 *
 *	[## public void setMenuDimension(int w,int h) {} ]: 
 *		功能: 设置菜单宽度和高度(在初始化菜单后加入组件之前使用)
 *
 *	[## public void setMenuLocation(int x, int y) {} ]: 
 *		功能: 设置菜单的坐标(在初始化菜单后加入组件之前使用)
 *
 *	[## public void setTitleHeight(int h) {} ]: 
 *		功能: 设置模板标题按键高度(当标题按键有背景图标时才使用本方法)
 *
 *	[## public void setButtonPanelBackground(Color bg) {} ]: 
 *		功能: 设置按键模板背景颜色(在初始化菜单后加入组件之后使用)
 *
 *	[## public String getSelectButtonName() {} ]: 
 *		功能: 获得选中的按键名
 *
 *	[## private void slither(int index) {} ]:
 *		功能: 处理菜单滑动效果
 *
 *  [ 遗留问题    ]  : 	1、在改变窗口大小时,不能重画菜单
 *						2、不能给各按键模板设置背景图案
 *						3、不能改变按键的前景颜色
 *
 *##############################################################################
 */
package sunsdk.swing;
 
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;



public class SlitherMenu 
extends JPanel 
implements ActionListener {
	
	//按键模板数组
	private ArrayList template = new ArrayList();
	//放置按键面板的数组
	private ArrayList buttonPanels = new ArrayList();
	//触发ActionListener事件的按键名
	private String selectButtonName = "";
	//当前展开模板的序号
	private int selectPanelNumber	= 0;
	//将要展开模板的序号
	private int selectPanelNumberNew = 0;
	
	//模板总数
	private int panelconut = 0;
	//定义滑动菜单的坐标
	private int sm_X = 0;
	private int sm_Y = 0;
	//定义滑动菜单的宽度和高度
	private int slitherMenuBar_Width  = 60;
	private int slitherMenuBar_Height = 300;
	//按键组模板缩起后的高度
	private int titleHeight = 28;
	
	
	
	/**=======================================================================**
	 *		[## public SlitherMenu() {} ]: 	构造函数
	 *			参数   :无
	 *			返回值 :无
	 *			修饰符 :public
	 *			功能   :滑动菜单的构造函数 (无部局面板)
	 **=======================================================================**
	 */
	public SlitherMenu() {
		super(null);		//设置主面板为无部局
	}
	
	/**=======================================================================**
	 *		[## public void addPanel(String name,String ico, int index, int quantity) {} ]:
	 *			参数   :String name 表示按键模板的标题按键名
	 *					 String ico	 表示标题栏的背景图标
	 *					 int index	 表示按键模板的索引序号
	 *					 int quantity表示模板内将要放入按键的数量
	 *			返回值 :无
	 *			修饰符 :public
	 *			功能   :制作按键模板,并加入主模板
	 **=======================================================================**
	 */
	public void addPanel(String name,String ico, int index, int quantity) {
		JButton titleButton;
		JScrollPane spPanel;
		JPanel panelMain, buttonPanel;
		
		titleButton = new JButton(name, new ImageIcon(ico));	//制作标题按键
		panelMain	= new JPanel(new BorderLayout(0, 0));		//框架面板为边界部局
		buttonPanel = new JPanel(new GridLayout(quantity, 1));	//按键组面板为表格部局
		spPanel		= new JScrollPane(buttonPanel);				//制作滚动面板
		spPanel.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		
		//设置标题按键属性, 如果图标为空,则默认Java原有属性
		if(ico.length() > 0) {
			titleButton.setFocusPainted(false);					//设置焦点外框为假
			titleButton.setBorderPainted(false);				//设置按键无边框
			titleButton.setContentAreaFilled(false);			//设置按键背景色透明
			titleButton.setHorizontalTextPosition(SwingConstants.CENTER); //设置Ico与文字居中
			//panelMain.setBorder(new LineBorder(new Color(184, 207, 229)));//加外框线
		}//Endif
		
		//对标题按键加事件监听
		titleButton.addActionListener(this);
		
		titleButton.setName(index+ "");				//设置框架面板标志
		panelMain.add("North", titleButton);		//加入标题按键
		panelMain.add("Center",spPanel);			//加入按键组面板
		this.add(panelMain);						//放入菜单面板
		panelconut++;								//面板记数器+1
		
		template.add(index, panelMain);				//将按键模板存入数组
		buttonPanels.add(index, buttonPanel);		//将放置按键的面板存入数组
	}
	
	/**=======================================================================**
	 *		[## public void addButton(String ico, String name, String tooltip, int index) {} ]:
	 *			参数   :String name	表示功能按键的名字
	 *					 String ico		表示功能按键的背景图标
	 *					 String tooltip 表示按键的气泡提示文本
	 *					 int index		表示按键要放入哪个模板
	 *			返回值 :无
	 *			修饰符 :public
	 *			功能   :制作功能按键,并加入相应的模板中
	 **=======================================================================**
	 */
	public void addButton(String ico, String name, String tooltip, int index) {
		JButton button = new JButton(name, new ImageIcon(ico));
		button.setToolTipText(tooltip);				//设置按键提示
		button.setBorderPainted(false);				//设置按键无边框
		button.setContentAreaFilled(false);			//设置按键背景色透明
		button.setHorizontalTextPosition(SwingConstants.CENTER);//设置Ico与文字居中
		button.setVerticalTextPosition(SwingConstants.BOTTOM);//设置Ico相对文字的位置
		button.addActionListener(this);						  //加事件监听
		((JPanel)buttonPanels.get(index)).add(button);		  //将按键加入按键面板
	}
	
	/**=======================================================================**
	 *		[## public void initButtonPanelDimension() {} ]: 
	 *			参数   :无
	 *			返回值 :无
	 *			修饰符 :public
	 *			功能   :初始化每个按键模板的最大尺寸(在主窗口的setVisible()方法之前使用)

⌨️ 快捷键说明

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