📄 slithermenu.java
字号:
/**
*##############################################################################
*
* [ 项目名 ] :
* [ 公司名 ] : 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 + -