?? 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 + -