首页 酒店管理系统源代码

酒店管理系统源代码

举报
开通vip

酒店管理系统源代码酒店管理系统源代码 西彼科技有限任公司责责责责 参考源码 酒店管理系码 彼岸 2011-03-31 本段源代,参考与阳光酒店管理系写的系包码码码码码码码码码码码码码码码码码码码 Sunsdk包 1,System包 CsHashtable.java /* * @(#)CsHashtable.java1.24 03/12/19 * * public class * * Copyright 2006 CazoSoft, Inc. All rights reserved. */ package sunsdk.syst...

酒店管理系统源代码
酒店管理系统源代码 西彼科技有限任公司责责责责 参考源码 酒店管理系码 彼岸 2011-03-31 本段源代,参考与阳光酒店管理系写的系包码码码码码码码码码码码码码码码码码码码 Sunsdk包 1,System包 CsHashtable.java /* * @(#)CsHashtable.java1.24 03/12/19 * * public class * * Copyright 2006 CazoSoft, Inc. All rights reserved. */ package sunsdk.system;import java.util.*; /** * CsHashtable *

* 责责的作用是封装哈希 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf *

* 注意: 本使用的哈希表方法责责责责责责责责责 put, 可能存 在不安全因素 *

* 相:责责责Hashtable * * @author 责强 * @version 2006.3.28 22:18 * @see java.util.Hashtable * @since CAZOSOFT 1.0 */ public class CsHashtable { /** * 静量功能责责 : 构造一个 hashtable 供其他函数使用 */ private static Hashtable hTable = new Hashtable(); /** * 构造函数功能 : 构造函数静的不能建象责责责责责责责责责责 */ private CsHashtable() { 2 } /** * 放入象函数责 功能: 把象放入哈希表责责责责责责责,责责象Object责型 * * @param key : * 责责, Object 责象 * @param value : * 责象, Object 责象 */ public static void put(Object key, Object value) { hTable.put(key, value); } /** * 返回象函数责 功能: 从哈希表中取出象责责,返回责Object责型 * * @param key : * 责责 * @return : 一个 Object 责象 */ public static Object get(Object key) { return hTable.get(key); } /** * 返回大小函数功能 : 返回哈希表的大小 * * @return : 一个 int 哈希表度责责责 */ public static int size() { return hTable.size(); } /** * 移除一个象责责 * * @param key : 接受一个要移除的责责 */ public static Object remove(Object key) { return hTable.remove(key); } }/** Sunini.java *############################################################################# # * *[ 责 目名] : * [ 公司名 ] : SunshineSOFT *[ 模名责责 ] : 责于INI文件的相操作责责责 *[ 文件名 ] : sunini.java 3 *[ 相文件责责责 ] : config.ini *[ 文件功能责责责责] : 责取和保存INI文件 *[ 作者 ] : 责俊 *[ 版本 ] : 1.1 *---------------------------------------------------------------------------- *[ 责 注] : *---------------------------------------------------------------------------- *[ 修改责责 ] : * *[ 日期 ] [版本] [修改人] [修改内容] *2006/03/31 1.0 责 责俊建 *2006/04/06 1.1 责 责责责责俊修改取函数 *##-------------------------------------------------------------------------- * 版所有责责责(c) 2006-2007, SunshineSOFT Corporation *--------------------------------------------------------------------------## * *[ 函数明责责 ] : * *[## private sunini() {} ]: *功能: 构造函数 * *[## public static String getIniKey (String k) {} ]: *功能: 责得INI文件中的指定的责责责责 * *[## public static void setIniKey (String k, String v) {} ]: *功能: 责置k责责责责的v责象 * *[## public static void saveIni (String k[]) {} ]: *功能: 将k字符数中所有所的保存到责责责责责责责责责责责责责责INI文件中 * * [ 责责责 留] : setIniKey ()方法不能理中的字符责责责责责责责责责责 * *############################################################################# # */ package com.sunshine.sunsdk.system; import java.util.*; import java.io.*; public class sunini { private static Properties ini = null; static { try{ ini = new Properties (); ini.load (new FileInputStream ("config.ini")); }catch (Exception ex) { System.out.println ("Load CONFIG.INI is false!!"); }//End try } /**============================================================= ==========** *[## private sunini() {} ]:构造函数 4 *参数:无 *返回:无责 *修符:责 责private *功能:防止例化 责责责sunini责象 **=======================================================================** */ private sunini() { } /**=======================================================================** *[## public static String getIniKey (String k) {} ]: *参数: String责责象表示 *返回:责 String责象表示k责责责责责责责责责所的,如果 失返回空串责责责责责责 *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能:得 责责INI文件中的指定的责责责责 **=======================================================================** */ public static String getIniKey (String k) { if(!ini.containsKey (k)) {//是否有 k 责责个 System.out.println ("The [ " + k + " ] Key is not exist!!"); return ""; }//End if(!ini.containsKey (k)) return ini.get (k).toString (); } /**=======================================================================** *[## public static void setIniKey (String k, String v) {} ]: *参数: String k责责象表示,String v责责责象表示 *返回:无责 *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能:置 责责k责责责责的v责象 **=======================================================================** */ public static void setIniKey (String k, String v) { if(!ini.containsKey (k)) {//是否有 k 责责个 System.out.println ("The [ " + k + " ] Key is not exist!!"); return; }//End if(!ini.containsKey (k)) ini.put (k, v); } /**=======================================================================** *[## public static void saveIni (String k[]) {} ]: *参数: String k[]字符串数表示要保存的所有责责责责责责责责责责 *返回:无责 5 *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能:将 k字符数中所有所的保存到责责责责责责责责责责责责责责 INI文件中 **=================================================================== ====** */ public static void saveIni (String k[]) { try{ FileWriter fw = new FileWriter ("config.ini"); BufferedWriter bw = new BufferedWriter ( fw ); //循量责责责i是k字符串数的下责责责责 for (int i = 0; i < k.length; i++) { bw.write (k[i] + "=" + getIniKey (k[i])); bw.newLine (); }//End for bw.close (); fw.close (); }catch (Exception ex) { System.out.println ("Save CONFIG.INI is false."); }//End try } } Suntools.java /** *############################################################################# # * *[ 责 目名] : * [ 公司名 ] : SunshineSOFT *[ 模名责责 ] : 工具函数 *[ 文件名 ] : suntools.java *[ 相文件责责责 ] : *[ 文件功能责责责责] : 责责责责责数据是否合法及流水号自分配 *[ 作者 ] : 责俊 *[ 版本 ] : 1.2 *---------------------------------------------------------------------------- *[ 责 注] : *---------------------------------------------------------------------------- *[ 修改责责 ] : * *[ 日期 ] [版本] [修改人] [修改内容] *2006/04/07 1.0 责 俊建立isDate()函数 *2006/04/08 1.1 责 俊添加函数#A, #B, #C, #D *2006/04/08 1.2 责 俊添加函数#E, #F, #G *##-------------------------------------------------------------------------- * 版所有责责责(c) 2006-2007, SunshineSOFT Corporation *--------------------------------------------------------------------------## * *[ 函数明责责 ] : * *[## private suntools () {} ] : *功能: 防止例化责责责suntools责象 6 * * [## public static boolean isDate (String date) {} ]: *功能: 判断日期字符串是否合法函数 * *[## public static boolean isNum (String in) {} ]: #A *功能: 责责字符串是否由数字(0-9)责成 * *[## public static boolean isNum (String in, int length, double min, double max) {} ]: #B *功能: 责责责责责责责责责责责责责责责责责责字符串表示的数及范,且字符串只能是数字成 * *[## public static String getNumber (int type) {} ]:#C *功能: 自分配据号责责责责责责责, 自增责责责 * *[## public static void savNumber (String num, int type) {} ]: #D *功能: 将已用号保存到责责责责责INI文件 * *[## public static double getConsumeFactor(String sDate, String eDate) {} ]: #E *功能: 责责责 责算酒店天数按INI文件中置的责责责 * *[## public static double getClockFactor(String sDate, String eDate) {} ]: #F *功能: 责责责责责责 责算酒店点房系数按INI文件中置的责责责 * *[## public static String getConsumeHour(String sDate, String eDate) {} ]: #G *功能: 责责责责责责责责责责责算两个之有几小几分 * * * [ 责责责 留] : * * *############################################################################# # */ package com.sunshine.sunsdk.system; import java.util.*; import java.text.*; import java.sql.*; import com.sunshine.sunsdk.sql.*; public class suntools { public static final int Number_RZ = 0;//表示售号责责责责 public static final int Number_YD= 1;//表示号责责责责 public static final int Number_JS= 1;//表示号责责责责 /**============================================================= ==========** *[## private suntools () {} ]:构造函数 *参数:无 *返回:无责 *修符:责 责private *功能:防止例化 责责责suntools责象 **=================================================================== ====** 7 */ private suntools () { } /**=======================================================================** *[## public static boolean isDate (String date) {} ]: *参数: String责象表示日期的字符串 *返回:责 boolean 合法返回true *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能:判断日期字符串是否合法函数 **=================================================================== ====** */ public static boolean isDate (String date) { SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss"); String isdate = date; if(date.length() == 10)//如果只有日期,函数自责 加上00:00:00 isdate = date + " 00:00:00"; try { sdf.parse (isdate); return true; } catch (Exception ex) { System.out.println ("feetools.isDate(): The DATE format is error ."); return false; } } /**=======================================================================** *[## public static boolean isNum (String in) {} ]: *参数: String责责责责责象表示被字符串 *返回:责 boolean 合法返回true *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能:字符串是否由数字 责责责责责责责责责责(0-9)责成 **=================================================================== ====** */ public static boolean isNum (String in) { return isNum (in, 0, 0, 0); } /**=======================================================================** *[## public static boolean isNum (String in, int length, double min, double max) {} ]: *参数: String责责责责责象表示被字符串 * length责责责责责责量表示字符串最大度,取0, 表示没有度限定责责责责 8 * min,max责量限定了String责责象表示的数范,当责责责(length > 0)责 *返回:责 boolean 合法返回true *修符:责 责public static 可以不例化象而直责责责责责责责接用方法责责责责 *功能:字符串表示的数及范, 责责责责责责责责责责责责责责且字符串只能是数字成责责 **=================================================================== ====** */ public static boolean isNum (String in, int length, double min, double max) { String num = in; int point = 0;//'.'的个数 int len = num.length (); if(length > 0) { if(len > length || len == 0) {//判断字符串度责责,不合法空返回false System.out.println ("suntools.isNum(): Length error."); return false; }//Endif }//End if(length > 0) else if(len == 0) {//判断字符串是否责空,空返回false System.out.println ("suntools.isNum(): String is NULL"); return false; }//End if(len == 0) for (int i = len - 1; i >=0; i--) {//判断字符串只能是数字 char ac = num.charAt (i); if(ac == '.' && point == 0 && i!= 0) {//如果是'.'字符,且是第一次出,且不是只有一个点责责责责责责责责责责 if(i > len - 4) {//判断小数位只能是两位 point++; continue; }//Endif }//Endif if(ac < '0' || ac > '9' ) { System.out.println ("suntools.isNum(): Character isn't ( '0' - '9' )"); return false; }//Endif }//Endfor if(length !=0) { double s = Double.parseDouble (num);//责在len责责字符串表示的数 if(s < min || s >max) {//限制范责min-max之责 System.out.println ("suntools.isNum(): Amount limit error. "); return false; }//Endif }//End if(length != 0) return true; } /**============================================================= ==========** *[## public static String getNumber (int type) {} ]: 9 *参数: int责责责责责责责责责责量表示要得什型的号(责责责常量) *返回:责 String责象: 责号; *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能:自分配据号 责责责责责责责, 自增责责责 **=================================================================== ====** */ public static String getNumber (int type) { GregorianCalendar gc = new GregorianCalendar(); String tp, number, month, day;//责责责号, 责责责责号数位, 责月份, 责天 int numLen = 0;//责责号的默 位数 if(type == Number_RZ) {//要取售号责责责责责责 tp = sunini.getIniKey ("LodgName"); number = sunini.getIniKey ("LodgNumber"); }else if(type == Number_YD){//要取责责责责 责号 tp = sunini.getIniKey ("EngaName"); number = sunini.getIniKey ("EngaNumber"); }else { tp = sunini.getIniKey ("ChouName"); number = sunini.getIniKey ("ChouNumber"); } numLen = number.length ();//得 到号的默位数责责责责责责责 number = Integer.parseInt (number) + 1 + "";//将号增责责责1,再成字符串责责责责责 //判断数号是否超位责责责责责责责(超出要求度责责) if(number.equals ((int)Math.pow (10, numLen - 1) + "") && number.length() > 1) number = number.substring(1);//责责责号数 位清零 //for循责,用'0'责number责 位(i = 当前号位数责责责, i < numLen) for (int i = number.length (); i < numLen; i++) { number = "0" + number; }//Endfor //责责月份'0' month = gc.get (GregorianCalendar.MONTH) + 1 + ""; if( month.length() == 1) month = "0" + month; //责责天'0' day = gc.get (GregorianCalendar.DAY_OF_MONTH) + ""; if( day.length () == 1) day = "0" + day; //责责责责责接号,日期,责数位;责责责责责成据号 tp = tp + gc.get (GregorianCalendar.YEAR) + month + day + number; return tp;//返回号责责 10 } /**=======================================================================** *[## public static void savNumber (String num, int type) {} ]: *参数: String责责责象表示要保存的号 * int责责责责责责责量表示要保存什型的号(责责责 常量) *返回:无责 *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能:将已用号保存到 责责责责责INI文件 **=======================================================================** */ public static void savNumber (String num, int type) { //INI文件中的名责责 String ini[] = { "[SOFTINFO]", "UserName", "CompName", "[CONFIG]", "Soft_First", "Default_Link" , "Default_Page", "Sys_style", "[NUMBER]", "LodgName", "LodgNumber", "EngaName", "EngaNumber", "ChouName", "ChouNumber", "[HABITUS]", "Ck_Habitus", "Ck_Minute", "[PARTTIME]", "In_Room", "Out_Room1", "Out_Room2", "InsuDay", "ClockRoom1", "ClockRoom2", "InsuHour1", "InsuHour2", "[JDBC]", "DBFname", "UserID", "Password", "IP", "Access", "[ODBC]", "LinkName" }; String bt; if(type == Number_RZ) { bt = sunini.getIniKey ("LodgName"); sunini.setIniKey ("LodgNumber", num.substring (bt.length () + 8)); } else if(type == Number_YD){ bt = sunini.getIniKey ("EngaName"); sunini.setIniKey ("EngaNumber", num.substring (bt.length () + 8)); } else{ bt = sunini.getIniKey ("ChouName"); sunini.setIniKey ("ChouNumber", num.substring (bt.length () + 8)); } //保存到INI文件 sunini.saveIni (ini); } /**=======================================================================** *[## public static double getConsumeFactor(String sDate, String eDate) {} ]: *参数: String sDate责责责责责象表示始 * String eDate责责责责责量表示束 *返回:责 double *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 11 *功能:算酒店天数 责责责责责 责按INI文件中置的责责责 **=================================================================== ====** */ //责责责责得消系数 public static double getConsumeFactor(String sDate, String eDate) { //责责责责责责责责得始日期的--年--月--日--责--分--秒 String syh [] = sDate.trim ().split(" "); String symd[] = syh[0].trim().split("-"); String shms[] = syh[1].trim().split(":"); int sy = Integer.parseInt(symd[0]); int sM = Integer.parseInt(symd[1]); int sd = Integer.parseInt(symd[2]); int sh = Integer.parseInt(shms[0]); int sm = Integer.parseInt(shms[1]); int ss = Integer.parseInt(shms[2]); //责责责责责责责责得束日期的--年--月--日--责--分--秒 String eyh [] = eDate.trim ().split(" "); String eymd[] = eyh[0].trim().split("-"); String ehms[] = eyh[1].trim().split(":"); int ey = Integer.parseInt(eymd[0]); int eM = Integer.parseInt(eymd[1]); int ed = Integer.parseInt(eymd[2]); int eh = Integer.parseInt(ehms[0]); int em = Integer.parseInt(ehms[1]); int es = Integer.parseInt(ehms[2]); //责得sDate的long责 long sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime(); //责得eDate的long责 long edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime(); double db = 0; if(sdt > edt) {//不合法责责责始日期一定要小于束 日期 db = -1; return db; }//Endif if(sdt == edt) {//无差责责责 db = 0; return db; }//Endif int insuDay = (int)(edt - sdt)/3600000; if(insuDay < 24) {//入住不到一天 if(Integer.parseInt(sunini.getIniKey("InsuDay")) == 1) db = 1;//按全天责责 else { if(insuDay > 1 && insuDay < 12) db = 0.5;//如果不按全天,责责 责大于1小按半天责责责责责责 12 else db = 1;//如果不按全天,责责 责大于12小按全天责责责责责责 }//Endif return db; }//Endif //几点之后按新的一天责责 int inRoom = Integer.parseInt(sunini.getIniKey("In_Room")); if(sh < inRoom) { db = 0.5; }//Endif sh = inRoom;//多的已加了系数,去掉多余的责责责责责责责责责责责责责责 //几点之后按半天责责 int outRoom1 = Integer.parseInt(sunini.getIniKey("Out_Room1")); int outRoom2 = Integer.parseInt(sunini.getIniKey("Out_Room2")); if(eh > outRoom1 && eh < outRoom2) { db = db + 0.5; eh = outRoom1;//多的已加了系数,去掉多余的责责责责责责责责责责责责责责 }else if(eh >= outRoom2) { db = db + 1; eh = outRoom2; }//Endif //责责责算入住 sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime(); edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime(); db = db + (edt - sdt)/86400000; return db; } /**============================================================= ==========** *[## public static double getClockFactor(String sDate, String eDate) {} ]: *参数: String sDate责责责责责象表示始 * String eDate责责责责责量表示束 *返回:责 double *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能:算酒店点房系数 责责责责责责责责 责按INI文件中责 置的 **=================================================================== ====** */ public static double getClockFactor(String sDate, String eDate) { //责责责责责责责责得始日期的--年--月--日--责--分--秒 String syh [] = sDate.trim ().split(" "); String symd[] = syh[0].trim().split("-"); String shms[] = syh[1].trim().split(":"); int sy = Integer.parseInt(symd[0]); int sM = Integer.parseInt(symd[1]); int sd = Integer.parseInt(symd[2]); int sh = Integer.parseInt(shms[0]); 13 int sm = Integer.parseInt(shms[1]); int ss = Integer.parseInt(shms[2]); //责责责责责责责责得束日期的--年--月--日--责--分--秒 String eyh [] = eDate.trim ().split(" "); String eymd[] = eyh[0].trim().split("-"); String ehms[] = eyh[1].trim().split(":"); int ey = Integer.parseInt(eymd[0]); int eM = Integer.parseInt(eymd[1]); int ed = Integer.parseInt(eymd[2]); int eh = Integer.parseInt(ehms[0]); int em = Integer.parseInt(ehms[1]); int es = Integer.parseInt(ehms[2]); //责得sDate的long责 long sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime();//责得eDate的long责 long edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime();//责责责责得差 double db = 0; if(sdt > edt) {//不合法责责责始日期一定要小于束 日期 db = -1; return db; }//Endif //责责责责责责责责责得两个之有多少秒 edt = (edt - sdt) / 1000; //--------------------------------------------------------------------//if(edt <= 60 * Integer.parseInt(sunini.getIniKey("ClockRoom1"))) { db = 0;//责责责责责责责责房后几分始,INI文 件置责责 return db; }//Endif //--------------------------------------------------------------------//if(edt / 60 < 60 * Integer.parseInt(sunini.getIniKey("ClockRoom2"))) { db = 1;//不足几小按一个位责责责责责责责责 return db; }//Endif //--------------------------------------------------------------------////除以上可能的正常 公式 小学单位换算公式大全免费下载公式下载行测公式大全下载excel公式下载逻辑回归公式下载 如下责责责责责责 db = edt / 3600;//责责责责责责责得去的小数 edt = edt % 3600 / 60;//责责责得多余的分数 if(edt > Integer.parseInt(sunini.getIniKey("InsuHour2")) && edt <= Integer.parseInt(sunini.getIniKey("InsuHour1"))) { db = db + 0.5;//超多少分,但责责责责责责 小于多少分部分,收半价 }else if(edt > Integer.parseInt(sunini.getIniKey("InsuHour2"))) { db = db + 1;//超多少分的,收全价责责责责责责责责责 }//Endif //--------------------------------------------------------------------// 14 return db; } /**============================================================= ==========** *[## public static String getConsumeHour(String sDate, String eDate) {} ]: *参数: String sDate责责责责责象表示始 * String eDate责责责责责量表示束 *返回:责 String *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能:算两个之有几小几分 责责责责责责责责责责责责责责 **=================================================================== ====** */ public static String getConsumeHour(String sDate, String eDate) { //责责责责责责责责得始日期的--年--月--日--责--分--秒 String syh [] = sDate.trim ().split(" "); String symd[] = syh[0].trim().split("-"); String shms[] = syh[1].trim().split(":"); int sy = Integer.parseInt(symd[0]); int sM = Integer.parseInt(symd[1]); int sd = Integer.parseInt(symd[2]); int sh = Integer.parseInt(shms[0]); int sm = Integer.parseInt(shms[1]); int ss = Integer.parseInt(shms[2]); //责责责责责责责责得束日期的--年--月--日--责--分--秒 String eyh [] = eDate.trim ().split(" "); String eymd[] = eyh[0].trim().split("-"); String ehms[] = eyh[1].trim().split(":"); int ey = Integer.parseInt(eymd[0]); int eM = Integer.parseInt(eymd[1]); int ed = Integer.parseInt(eymd[2]); int eh = Integer.parseInt(ehms[0]); int em = Integer.parseInt(ehms[1]); int es = Integer.parseInt(ehms[2]); //责得sDate的long责 long sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime(); //责得eDate的long责 long edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime(); //责责责责得差 sdt = edt - sdt; //生成去多少的字符串责责责责责责责责责责 String t = sdt / 3600000 + "小责" + sdt % 3600000 / 60000 + "分"; return t; } } ToCap.java 15 /* * @(#)ToCap.java1.24 03/12/19 * * Copyright 2006 CazoSoft, Inc. All rights reserved. */ package sunsdk.system;/** * ToCap *

* 本用于化中文大写人民责责责责责责责责责责责责 * * @author 责强 * @version 22.14, 04/05/06 * @since CAZOSOFT 1.0 */ public class ToCap { /** * 用置大写数责责责责责责责(100,000,000 (一责)以内). * * @param money : * String 接收用的正数责责责责责. * @return : String 包括整或角分的中文大写人民 责 责,如果不合法,将返回空(null) */ public String setMoney(String money) { String re = null; double num; //责责数据是否合法 try { num = Double.parseDouble(money.trim()); if (num < 100000000 && num >= 0) { //合法, 使用字符串始责责责责 re = this.mySetMoney(money); }//end if } catch (Exception ex) { }//end try //返回责 return re; } /** * 大写函数责责责责. 功能: 责责责责责责责数字中文大写 * * @param num : * int 接受整数 * @return : String 大写数字零到玖 . */ private String setDaXie(int num) { String re = null; switch (num) { case 0: re = "零"; 16 break; case 1: re = "壹"; break; case 2: re = "责"; break; case 3: re = "责"; break; case 4: re = "肆"; break; case 5: re = " "; break; case 6: re = "责"; break; case 7: re = "柒"; break; case 8: re = "捌"; break; case 9: re = "玖"; break; default: break; } return re; } /** * 责责理大写人民 * * @param num : * String 接收理的字符串责责责责责责责(责责数字). * @return : 返回理的大写人民责责责责责责责责责. */ private String mySetMoney(String num) throws Exception { //要返回的字符串 String re = ""; //责责责程 String setNum = null; int index = num.indexOf("."); //责理整数 if (index == -1) { setNum = num; } else { setNum = num.substring(0, index); } 17 int weiShu = setNum.length(); if (weiShu > 0) { int leng = setNum.length(); int numYuan = Integer.parseInt("" + setNum.charAt(weiShu - 1)); String zhuanYuan = setDaXie(numYuan); re = zhuanYuan; //个位 if (weiShu > 1) { int numShi = Integer.parseInt("" + setNum.charAt(weiShu - 2)); String zhuanShi = setDaXie(numShi); //十位 re = zhuanShi + "拾" + re; if (weiShu > 2) { int numBai = Integer.parseInt("" + setNum.charAt(weiShu - 3)); String zhuanBai = setDaXie(numBai); //百位 re = zhuanBai + "佰" + re; if (weiShu > 3) { int numQian = Integer.parseInt("" + setNum.charAt(weiShu - 4)); String zhuanQian = setDaXie(numQian); //千位 re = zhuanQian + "仟" + re; if (weiShu > 4) { int numWan = Integer.parseInt("" + setNum.charAt(weiShu - 5)); String zhuanWan = setDaXie(numWan); //万位 re = zhuanWan + " " + re; if (weiShu > 5) { int numShiWan = Integer.parseInt("" + setNum.charAt(weiShu - 6)); String zhuanShiWan = setDaXie(numShiWan); //十万位 re = zhuanShiWan + "拾" + re; if (weiShu > 6) { int numBaiWan = Integer.parseInt("" + setNum.charAt(weiShu - 7)); String zhuanBaiWan = setDaXie(numBaiWan); //百万位 re = zhuanBaiWan + "佰" + re; if (weiShu > 7) { int numQianWan = Integer.parseInt("" + setNum.charAt(weiShu - 8)); String zhuanQianWan = setDaXie(numQianWan); //千万位 re = zhuanQianWan + "仟" + re; }//end qianwan }//end baiwan }//end shiwan }//end wan }//end qian }//end bai }//end shi }//end yuan 18 //责理小数 if (index != -1) { String xiaoShu = num.substring(index + 1, num.length()); int leng = xiaoShu.length(); int numJiao = Integer.parseInt("" + xiaoShu.charAt(0)); String zhuanJiao = setDaXie(numJiao); int numFen; if (leng == 1) { numFen = 0; }//end if numFen = Integer.parseInt("" + xiaoShu.charAt(1)); String zhuanFen = setDaXie(numFen); //十分位+百分位 if (numJiao == 0 && numFen != 0 || numJiao != 0 && numFen != 0) { re = re + "责" + zhuanJiao + "角" + zhuanFen + "分"; } else { re = re + "责整"; }//end if } else { re = re + "责整"; }//end index return re; } } 2)swing包 CsUIManager.java/* * @(#)CsUIManager.java2006-4-13 * * public class * * Copyright 2006 CazoSoft, Inc. All rights reserved. */ package sunsdk.swing; import java.awt.*; import javax.swing.*; import javax.swing.plaf.metal.*;/** * CsUIManager *

* 责责责责责责责责明:本外管理器 *

* 警告: * 使用金属,BOLD,外,入中文会有异常,但不影响系运行责责责责责责责责责责责责责责责责责责责责 19 *

* 相文件:责责责责责o.jar * * @author 责强 * @version 2006-4-13 23:05:39 * @since CAZOSOFT 1.0 */ public class CsUIManager { //Windows 外责 public static final int WINDOWS = 0; //Java 默外责责责 public static final int METAL = 1; //Linux 外责 public static final int MOTIF = 2; //WindowsClassic 外责 public static final int WINDOWSCLASSIC = 3; //Alloy 外责 public static final int ALLOY = 4; //Alloy 玻璃外责 public static final int GLASSTHEMEALLOY = 5; //Alloy 迷幻外责 public static final int ACIDTHEMEALLOY = 6; //Alloy 责责多因外 public static final int BEDOUIDTHEMEALLOY = 7; //Alloy 默外责责责 public static final int DEAFULTTHEMEALLOY = 8; //Bold 外责 public static final int BOLD = 9; /** * 界面格器责责责责责 * * @param cp * 接受要改的控件责责责责 * @param style * 接受界面下责 * @return 返回成功置与否责责责责 */ public static boolean setUI(Component cp, int style) { try { switch (style) { case 0: UIManager.setLookAndFeel("com.sun.java.swing.plaf." + "windows.WindowsLookAndFeel"); break; case 1: 20 UIManager.setLookAndFeel("javax.swing.plaf." + "metal.MetalLookAndFeel"); break; case 2: UIManager.setLookAndFeel("com.sun.java.swing.plaf." + "motif.MotifLookAndFeel"); break; case 3: UIManager.setLookAndFeel("com.sun.java.swing.plaf." + "windows.WindowsClassicLookAndFeel"); break; case 4: UIManager.setLookAndFeel("com.incors.plaf." + "alloy.AlloyLookAndFeel"); break; case 5: UIManager.setLookAndFeel("soft.wes.feels." + "GlassThemeAlloyLookAndFeel"); break; case 6: UIManager.setLookAndFeel("soft.wes.feels." + "AcidThemeAlloyLookAndFeel"); break; case 7: UIManager.setLookAndFeel("soft.wes.feels." + "BedouinThemeAlloyLookAndFeel"); break; case 8: UIManager.setLookAndFeel("soft.wes.feels." + "DefaultThemeAlloyLookAndFeel"); break; case 9: UIManager.put("swing.boldMetal", Boolean.FALSE); //可置框外责责责责责责责 JDialog.setDefaultLookAndFeelDecorated(true); //可置置窗口外责责责责责责责责 JFrame.setDefaultLookAndFeelDecorated(true); Toolkit.getDefaultToolkit().setDynamicLayout(true); System.setProperty("sun.awt.noerasebackground", "true"); UIManager.setLookAndFeel(new MetalLookAndFeel()); break; } } catch (Exception ex) { JOptionPane.showMessageDialog(null, "更格失责责责责责,以原格责责责 示"); return false; } SwingUtilities.updateComponentTreeUI(cp); cp.repaint(); return true; } 21 } FStartWindow.java /** *############################################################################# # * *[ 模名责责 ] : 系启界面责责责责责 *[ 文件名 ] : FStartWindow.java *[ 文件功能责责责责 ] : 完成初始化系运行责责责责责境 *[ 版本 ] : 1.0 *---------------------------------------------------------------------------- *[ 责 注] : 用于初始化运行责责责责责责责责境,接数据 *---------------------------------------------------------------------------- *[ 修改责责 ] : * *[ 日期 ] [修改人] [修改内容] *2006/03/22 责 责俊建 * *##-------------------------------------------------------------------------- * 版所有责责责(c) 2006-2007, SunshineSOFT Corporation *--------------------------------------------------------------------------## * *[ 函数明责责 ] : * *[## public FStartWindow(String picName, Frame f, int waitTime) {} ] : *参数 : String 责象,表示界面背景片责责; * Frame 责象,表示父窗口; * int 责量,表示启界面责责责责责责责责等待的 *返回责 : 无 * 修符责责 : public *功能 : 本的构造函数责责责责责责 * *############################################################################# # */ package com.sunshine.sunsdk.swing; import javax.swing.*; import java.awt.*; public class FStartWindow extends JWindow { ImageIcon image; JLabel pic; //构造函数 public FStartWindow(String picName, Frame f, int waitTime) { super(f); ImageIcon image = new ImageIcon(picName); JLabel pic = new JLabel(image); this.getContentPane().add(pic, BorderLayout.CENTER); //责责责责责责责责责责整片大小到屏幕中央 this.pack(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 22 Dimension labelSize = pic.getPreferredSize(); setLocation(screenSize.width/2 - (labelSize.width/2), screenSize.height/2 - (labelSize.height/2)); final int PAUSE = waitTime; final Runnable closerRunner = new Runnable() { public void run() { setVisible(false); dispose(); //System.exit(0); } };//End closerRunner Runnable waitRunner = new Runnable() { public void run() { try { Thread.sleep(PAUSE); SwingUtilities.invokeAndWait(closerRunner); } catch(Exception e) { e.printStackTrace(); // 能责责责捕InvocationTargetException // 能责责责捕InterruptedException } } };//End waitRunner setVisible(true); Thread waitThread = new Thread(waitRunner, "SplashThread"); waitThread.start(); } } JQFrame.java /** *############################################################################# # * *[ 责 目名] : * [ 公司名 ] : SunshineSOFT *[ 模名责责 ] : 防QQ的自窗口责责责 *[ 文件名 ] : JQFrame.java *[ 相文件责责责 ] : *[ 文件功能责责责责] : 窗口靠近屏幕上方,自责责责责责责起 *[ 作者 ] : 责俊 *[ 版本 ] : 1.0 *---------------------------------------------------------------------------- *[ 责 注] : *---------------------------------------------------------------------------- *[ 修改责责 ] : * *[ 日期 ] [版本] [修改人] [修改内容] *2006/04/29 1.0 责 责俊建 *##-------------------------------------------------------------------------- 23 * 版所有责责责(c) 2006-2007, SunshineSOFT Corporation *--------------------------------------------------------------------------## * *[ 函数明责责 ] : * *[## public Login() {} ]: *功能: JQFrame 的构造函数 * *[## public void setSize(int w, int h) {} ]: *功能: 责置窗口尺寸 * *[## public void setStep(int s) {} ]: *功能: 责责责责责置的窗口作步 * * * [ 责责责 留] : * *############################################################################# # */ package com.sunshine.sunsdk.swing;import javax.swing.*; import java.awt.*; import java.awt.event.*; import com.sunshine.sunsdk.swing.*;//公共责责包 import com.sunshine.sunsdk.system.*;public class JQFrame extends JFrame implements MouseListener { private boolean winState = true;//窗口伸志责责责 private int sunWidth = 200;//窗口默度责责责 private int minHieght = 5;//窗口责责责责责责起后的高度 private int maxHieght = 506;//窗口展责责责责责后的高度 private int step = 15;//窗口作责责责责 步 /**============================================================= ==========** *[## public JQFrame() {} ]: *参数:无 *返回:无责 *修符:责 责public *功能: JQFrame 的构造函数 **=================================================================== ====** */ public JQFrame() { super("JQFrame"); //责责责责窗口加鼠听 this.addMouseListener(this); //责责责置窗口左上角 ImageIcon ia = new ImageIcon("pic/ico.gif"); 24 this.setIconImage(ia.getImage()); //责责责责置窗口默大小 this.setBounds(55, 55, sunWidth, maxHieght); //责责责责置窗口不可改大小 this.setResizable(false); } /**============================================================= ==========** *[## public void setSize(int w, int h) {} ]: *参数: int w 表示窗口度责责 int h 表示窗口高度 *返回:无责 *修符:责 责public *功能:置窗口 责责责责责责尺寸 **=================================================================== ====** */ public void setSize(int w, int h) { sunWidth = w; maxHieght = h; super.setSize(w, h); } /**============================================================= ==========** *[## public void setStep(int s) {} ]: *参数: int s 表示要置的窗口作责责责责责责责责责步 *返回:无责 *修符:责 责public *功能:置窗口的作 责责责责责责责责责步 **=================================================================== ====** */ public void setStep(int s) { if(s > 4) { step = s;//责责置窗口作步责 }//Endif } /**============================================================= ==========** *MouseListener 责听 **=================================================================== ====** */ public void mouseClicked(MouseEvent me) { } public void mousePressed(MouseEvent me) { } public void mouseReleased(MouseEvent me) { 25 if(this.getY() < 0) { //如果窗口的Y坐责责责小于0,将其置责责责责0,责责责责起窗口 this.setLocation(this.getX(), 0); for (int i = this.getHeight(); i > minHieght; i-=step) { if(i - minHieght <= step) { i = minHieght; }//Endif super.setSize(this.getWidth(), i); }//Endfor winState = false; }//Endif } public void mouseEntered(MouseEvent me) { if(me.getSource() == this) {//如果鼠责责 入窗口 if(this.getY() == 0 && !winState) {//如果窗口 在屏幕北责责责责责且已起 //展责责责窗口 for (int i = minHieght; i < maxHieght; i+=step) { if(i + step >= maxHieght) { i = maxHieght; }//Endif super.setSize(this.getWidth(), i); }//Endfor winState = true; }//Endif }//Endif } public void mouseExited(MouseEvent me) { if(me.getSource() == this) {//如果鼠责 移出窗口 int mx = me.getX(); int my = me.getY(); //如果是在窗口内部控件上返回责责责 if(mx > 0 && mx < sunWidth && my < maxHieght) { return; }//Endif if(this.getY() == 0 && winState) {//如果窗口 在屏幕北责责责责责且已展 //责起窗口 for (int i = maxHieght; i >= minHieght; i-=step) { if(i - minHieght <= step) { i = minHieght; }//Endif super.setSize(this.getWidth(), i); }//Endfor winState = false; }//Endif }//Endif } } SlitherMenu.java 26 /** *############################################################################# # * *[ 责 目名] : * [ 公司名 ] : 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() {} ]: *功能: 责责责责责责责得中的按名 * 27 *[## 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 *功能: 责责责责责责责责 滑菜的构造函数(无部局面板) 28 **=================================================================== ====** */ 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); 29 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()方法之前使用) 30 **=======================================================================** */ public void initButtonPanelDimension() { for (int i = 0; i < panelconut; i++) { ((JPanel)template.get(i)).setBounds(sm_X, sm_Y, slitherMenuBar_Width, slitherMenuBar_Height - titleHeight * (panelconut - 1)); }//Endfor } /**=======================================================================** *[## public void setInitMenu() {} ]: *参数:无 *返回:无责 *修符:责 责public *功能:置初始化后 责责责责责责责责责责责责责展第一菜(在主窗口的 setVisible()方法之后使用) **=======================================================================** */ public void setInitMenu() { if(panelconut > 0) { JPanel mainMenu = (JPanel)template.get(0);//展责 第一责责责菜 int titlesHeight = (panelconut - 1) * titleHeight;//责责责得其它模板 的高度和责责 int height = slitherMenuBar_Height - titlesHeight; mainMenu.setBounds(sm_X, sm_Y, slitherMenuBar_Width, height); //责责责责理其它菜 for (int i = 1; i < panelconut; i++) { ((JPanel)template.get(i)).setBounds(sm_X, sm_Y + height + (i - 1) * titleHeight, slitherMenuBar_Width, titleHeight); }//Endfor }else { String msg = "没有按模责责责责责责责板可。"; JOptionPane.showMessageDialog(null, msg, "责 责",JOptionPane.ERROR_MESSAGE); }//Endif } /**=======================================================================** *[## public void setMenuDimension(int w,int h) {} ]: *参数: int w 表示菜责责责责度,int h 表示菜高责责责度 *返回:无责 *修符:责 责public *功能:置 责责责责责责责责责菜度和高度(在初始化菜责责责责后加入 责件之前使用) **=======================================================================** 31 */ public void setMenuDimension(int w,int h) { if(panelconut == 0) { slitherMenuBar_Width = w; slitherMenuBar_Height = h; }else { String msg = "setMenuDimension()方法在加入件之责责责责责责责 前使用。"; JOptionPane.showMessageDialog(null, msg, "警告",JOptionPane.WARNING_MESSAGE); }//Endif } /**============================================================= ==========** *[## public void setMenuLocation(int x, int y) {} ]: *参数: int x 表示菜责责责责责责责的横向坐,int y 表示菜责责责的向坐责 *返回:无责 *修符:责 责public *功能:置 责责责责责责责菜的坐(在初始化菜责责责责责责后加入件之前使用) **=================================================================== ====** */ public void setMenuLocation(int x, int y) { if(panelconut == 0) { sm_X = x; sm_Y = y; }else { String msg = "setMenuLocation()方法在加入件之前使用责责责责责责责责责责责。"; JOptionPane.showMessageDialog(null, msg, "警告",JOptionPane.WARNING_MESSAGE); }//Endif } /**============================================================= ==========** *[## public void setTitleHeight(int h) {} ]: *参数: int h 表示按模责责责责责责责责责责板的的高度 *返回:无责 *修符:责 责public *功能:置模 责责责责责责责责责责板按高度(当按有责责责责责责责背景责责责才使用本方法) **=================================================================== ====** */ public void setTitleHeight(int h) { titleHeight = h; } /**============================================================= ==========** *[## public void setButtonPanelBackground(Color bg) {} ]: *参数: Color 责责责责责责责责责象表示按模板的背景色 32 *返回:无责 *修符:责 责public *功能:置按模 责责责责责责责责责责板背景色(在初始化菜责责责后加 入件之后使用责责责责责责) **=================================================================== ====** */ public void setButtonPanelBackground(Color bg) { if(panelconut > 0) { for (int i = 0; i < panelconut; i++) { ((JPanel)buttonPanels.get(i)).setBackground(bg); }//Endfor }else { String msg = "setButtonPanelBackground()方法在加入责责责责责 件之后使用。"; JOptionPane.showMessageDialog(null, msg, "警 告",JOptionPane.WARNING_MESSAGE); }//Endif } /**============================================================= ==========** *[## public String getSelectButtonName() {} ]: *参数:无 *返回:责 String 责责责责责责责责责责责责象表示触事件的功能按的名字 *修符:责 责public *功能:得中的按名 责责责责责责责责 **=================================================================== ====** */ public String getSelectButtonName() { return selectButtonName; } /**============================================================= ==========** *[## private void slither(int index) {} ]: *参数:无 *返回:无责 *修符:责 责private *功能:理 责责责责责责责责菜滑效果 **=================================================================== ====** */ private void slither(int index) { //责责责责责责责责得其它的高度和 int sp_h = slitherMenuBar_Height - titleHeight * (panelconut - 1); if(index == selectPanelNumber) {//如果是当前面板 责责责不理 return; }else if(index > selectPanelNumber) {//菜责责责责责上移作 int sp_y = titleHeight * (selectPanelNumber + 1); 33 for (int i = sp_h; i >= titleHeight; i --) { //当前展责责责责责面板起 ((JPanel)template.get(selectPanelNumber)).setSize(slitherMenuBar_Width, i); //责责责责责责责责责责责责责责责责理当前展面板与将要展面板之的 for (int j = selectPanelNumber + 1; j < index; j++) { int other_Y = ((JPanel)template.get(j)).getY() - 1; ((JPanel)template.get(j)).setLocation(sm_X, other_Y); }//Endfor //新面板展责 int index_Y = ((JPanel)template.get(index)).getY() - 1; int index_H = ((JPanel)template.get(index)).getHeight() + 1; ((JPanel)template.get(index)).setBounds(sm_X, index_Y, slitherMenuBar_Width, index_H); }//Endfor }else if(index < selectPanelNumber) {//下移作责责 int sp_y = titleHeight * (selectPanelNumber - 2); for (int i = sp_h; i >= titleHeight; i --) { //当前展责责责责责面板起 int spy = ((JPanel)template.get(selectPanelNumber)).getY() + 1; ((JPanel)template.get(selectPanelNumber)).setBounds(sm_X, spy, slitherMenuBar_Width, i); //责责责责责责责责责责责责责责责责理当前展面板与将要展面板之的 for (int j = selectPanelNumber - 1; j > index; j--) { int other_Y = ((JPanel)template.get(j)).getY() + 1; ((JPanel)template.get(j)).setLocation(sm_X, other_Y); }//Endfor //新面板展责 int index_H = ((JPanel)template.get(index)).getHeight() + 1; ((JPanel)template.get(index)).setSize(slitherMenuBar_Width, index_H); }//Endfor }//Endif this.validate();//确定当前菜责责责责的化 } /**=======================================================================** *ActionListener 责听 **=======================================================================** */ public void actionPerformed ( ActionEvent ae ) { //责责责责责责责得触事件的按Name selectButtonName = ((JButton)ae.getSource()).getName(); if(selectButtonName != null) {//不空的责责责责责责责责责责责责就是按 //责责责责责责责责得被中模板的序号 selectPanelNumberNew = Integer.parseInt(selectButtonName); //责责责责责责理菜滑效果 slither(selectPanelNumberNew); 34 selectPanelNumber = selectPanelNumberNew; } else { //责责责责责得功能按的名字 selectButtonName = ((JButton)ae.getSource()).getText(); }//Endif } } sunswing.java /** *############################################################################# # * *[ 责 目名] : * [ 公司名 ] : SunshineSOFT *[ 模名责责 ] : 窗口相的置责责责责 *[ 文件名 ] : sunswing.java *[ 相文件责责责 ] : swing.Theme.* *[ 文件功能责责责责] : 责置窗口属性 *[ 作者 ] : 责俊 *[ 版本 ] : 1.0 *---------------------------------------------------------------------------- *[ 责 注] : *---------------------------------------------------------------------------- *[ 修改责责 ] : * *[ 日期 ] [版本] [修改人] [修改内容] *2006/04/01 1.0 责 责俊建 *2006/04/19 1.1 责 责俊加入窗口主 *##-------------------------------------------------------------------------- * 版所有责责责(c) 2006-2007, SunshineSOFT Corporation *--------------------------------------------------------------------------## * *[ 函数明责责 ] : * *[## private sunswing() {} ]: *功能: 构造函数 * *[## public static void setWindowStyle (char style) {} ]: *功能: 责责责置窗口格 * *[## public static void setWindowCenter (Component cp) {} ]: *功能: 责置窗口在屏幕居中 * * * [ 责责责 留] : * *############################################################################# # */ package com.sunshine.sunsdk.swing; import javax.swing.*; import javax.swing.plaf.metal.MetalLookAndFeel; 35 import java.awt.*; import com.sunshine.sunsdk.swing.Theme.*; public class sunswing { //窗口外格常量责责责责责 public static final int SYSTEM_STYLE = '0'; public static final int JAVA_STYLE = '1'; public static final int METAL_STYLE = '2'; /**============================================================= ==========** *[## private sunswing() {} ]:构造函数 *参数:无 *返回:无责 *修符:责 责private *功能:防止例化 责责责sunswing责象 **=================================================================== ====** */ private sunswing() { } /**============================================================= ==========** *[## public static void setWindowStyle (int style) {} ]: *参数: int,表示代表格的常量责责责责责责责(责责责常量) *返回:无责 *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能:置窗口格 责责责责责责 **=================================================================== ====** */ public static void setWindowStyle (char style) { try { switch (style) { case '0': UIManager.setLookAndFeel ("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); break; case '1': UIManager.setLookAndFeel ("javax.swing.plaf.metal.MetalLookAndFeel"); break; case '2': UIManager.put ("swing.boldMetal", Boolean.FALSE); //可置框外责责责责责责责 JDialog.setDefaultLookAndFeelDecorated (true); //可置置窗口外责责责责责责责责 JFrame.setDefaultLookAndFeelDecorated (true); Toolkit.getDefaultToolkit().setDynamicLayout (true); 36 System.setProperty ( "sun.awt.noerasebackground", "true"); UIManager.setLookAndFeel (new MetalLookAndFeel()); //责责责责置窗口色主 MetalLookAndFeel.setCurrentTheme(new DarkGoldMetalTheme()); UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); }//End switch (style) } catch (Exception ex) { ex.printStackTrace(); }//End try } /**=======================================================================** *[## public static void setWindowCenter(Component cp) {} ]: *参数: Component责象,表示要居中的窗口 *返回:无责 *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能:置窗口在 责责责责责责责责责屏幕居中 **=======================================================================** */ public static void setWindowCenter(Component cp) { Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); cp.setLocation (screenSize.width / 2 - (cp.getWidth() / 2), screenSize.height / 2 - (cp.getHeight() / 2)); } } TJButton.java /** *############################################################################## * *[ 责 目名] : * [ 公司名 ] : SunshineSOFT *[ 模名责责 ] : 制作责ICO和气泡提示的按责 *[ 文件名 ] : TJButton.java *[ 相文件责责责 ] : *[ 文件功能责责责责] : 制作责ICO和气泡提示的按责 *[ 作者 ] : 责俊 *[ 版本 ] : 1.1 *---------------------------------------------------------------------------- *[ 责 注] : *---------------------------------------------------------------------------- *[ 修改责责 ] : * *[ 日期 ] [版本] [修改人] [修改内容] *2006/03/31 1.0 责 责俊建 37 *2006/04/06 1.1 责 俊增加构造函数 *2006/04/20 1.1 责 责责责责俊增加听效果 *##-------------------------------------------------------------------------- * 版所有责责责(c) 2006-2007, SunshineSOFT Corporation *--------------------------------------------------------------------------## * *[ 函数明责责 ] : * *[## public TJButton(String picName, String text, String toolTip) {} ]: *功能: 构造函数制作责ICO和气泡提示的按责 * *[## public TJButton(String picName, String text, String toolTip,boolean flag) {} ]: *功能: 制作责ICO和气泡提示的工具按责责责 * *[## private buildButton(String picName, String text, String toolTip,boolean flag) {} ]: *功能: 制作责ICO和气泡提示的工具按责责责,责责内使用 * * [ 责责责 留] : * *############################################################################## */ package com.sunshine.sunsdk.swing; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TJButton extends JButton implements MouseListener { /**=======================================================================** *[## public TJButton(String picName, String text, String toolTip) {} ] *构造函数 *参数: String picName 表示按上的责责责ICO文件名 * String text 表示按的名责责责责称 * String toolTip 表示按的责责ToolTip责示 *返回:无责 *修符:责 责public *功能:制作 责ICO和气泡提示的按责 **=======================================================================** */ public TJButton(String picName, String text, String toolTip) { buildButton(picName, text, toolTip, false); } /**=======================================================================** *[## public TJButton(String picName, String text, String toolTip,boolean flag) {} ] *构造函数 *参数: String picName 表示按上的责责责ICO文件名 38 * String text 表示按的名责责责责称 * String toolTip 表示按的责责ToolTip责示 * boolean 表示按大工具模式责责责责责责责责责责 *返回:无责 *修符:责 责public *功能:制作 责ICO和气泡提示的工具按责责责 **=======================================================================** */ public TJButton(String picName, String text, String toolTip,boolean flag) { buildButton(picName, text, toolTip, flag); } /**=======================================================================** *[## private buildButton(String picName, String text, String toolTip,boolean flag) {} ] *制作按函数责责责 *参数: String picName 表示按上的责责责ICO文件名 * String text 表示按的名责责责责称 * String toolTip 表示按的责责ToolTip责示 * boolean 表示按大工具模式责责责责责责责责责责 *返回:无责 *修符:责 责private *功能:制作 责ICO和气泡提示的工具按责责责,责责内使用 **=======================================================================** */ private void buildButton(String picName, String text, String toolTip,boolean flag) { this.setIcon (new ImageIcon (picName)); this.setText (text); this.setToolTipText (toolTip); if(flag) { //this.setBorderPainted (false); this.setContentAreaFilled(false);//责置背景色透明 this.setHorizontalTextPosition (SwingConstants.CENTER); this.setVerticalTextPosition (SwingConstants.BOTTOM); }//End if(flag) this.addMouseListener(this); } /**=======================================================================** *MouseListener 责听 **=======================================================================** */ public void mouseClicked (MouseEvent me) { } public void mousePressed (MouseEvent me) { } public void mouseReleased(MouseEvent me) { 39 } public void mouseEntered (MouseEvent me) { this.setForeground(new Color(156, 126, 66)); this.setBackground(new Color(234, 223, 203)); } public void mouseExited (MouseEvent me) { this.setForeground(new Color( 87, 87, 47)); this.setBackground(new Color(231, 215, 183)); } } TJList.java /** *############################################################################# # * *[ 责 目名] : * [ 公司名 ] : SunshineSOFT *[ 模名责责 ] : 责责听的JList列表框 *[ 文件名 ] : TJList.java *[ 相文件责责责 ] : *[ 文件功能责责责责] : 责责听的文本区域 *[ 作者 ] : 责俊 *[ 版本 ] : 1.0 *---------------------------------------------------------------------------- *[ 责 注] : *---------------------------------------------------------------------------- *[ 修改责责 ] : * *[ 日期 ] [版本] [修改人] [修改内容] *2006/04/25 1.0 责 责俊建 *##-------------------------------------------------------------------------- * 版所有责责责(c) 2006-2007, SunshineSOFT Corporation *--------------------------------------------------------------------------## * *[ 函数明责责 ] : * *[## public TJList() {} ]: *功能: 构造函数 * *[ 责责责 留] : * *############################################################################# # */ package com.sunshine.sunsdk.swing; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TJList 40 extends JList implements MouseListener { public TJList() { //责责责责责责置示的行数 this.setVisibleRowCount(5); //责置前景色和后景色 this.setForeground(new Color(141, 131, 106)); this.setBackground(new Color(244, 238, 227)); //加鼠听责责责 this.addMouseListener(this); } /**============================================================= ==========** *MouseListener 责听 **=================================================================== ====** */ public void mouseClicked (MouseEvent me) { } public void mousePressed (MouseEvent me) { } public void mouseReleased(MouseEvent me) { } public void mouseEntered (MouseEvent me) { this.setForeground(new Color( 87, 87, 47)); this.setBackground(new Color(248, 242, 230)); } public void mouseExited (MouseEvent me) { this.setForeground(new Color(141, 131, 106)); this.setBackground(new Color(244, 238, 227)); } } TJMoneyField.java /** *############################################################################# # * *[ 责 目名] : * [ 公司名 ] : SunshineSOFT *[ 模名责责 ] : 金文本框责责责责 *[ 文件名 ] : TJMoneyField.java *[ 相文件责责责 ] : *[ 文件功能责责责责] : 金文本框责责责责 *[ 作者 ] : 责俊 *[ 版本 ] : 1.0 *---------------------------------------------------------------------------- *[ 责 注] : *---------------------------------------------------------------------------- 41 *[ 修改责责 ] : * *[ 日期 ] [版本] [修改人] [修改内容] *2006/04/16 1.0 责 责俊建 *##-------------------------------------------------------------------------- * 版所有责责责(c) 2006-2007, SunshineSOFT Corporation *--------------------------------------------------------------------------## * *[ 函数明责责 ] : * *[## public TJMoneyField () {} ]: *功能: 构造函数金入本文框,默度责责责责责责责责责责责6 * *[## public TJMoneyField (String text) {} ]: *功能: 构造函数金入本文框,默度 责责责责责责责责责责责10 * *[## public TJMoneyField (String text, int length) {} ]: *功能: 构造函数建立一个指定金和度的金入本文框 责责责责责责责责责责责责 * *[## private void setLayout (int l) {} ]: *功能: 责责责责责责责责责责责责责责责责责责责责责责置金入本文框的方式和和列数并加焦点听 * *[## private void buildMoneyField (String text, boolean build) {} ]: *功能: 制作金入本文框责责责责责责 * *[## public String getText () {} ]: *功能: 责责得文本框金重写了JTextField的getText()方法 * *[## public void setText (String text) {} ]: *功能: 责责置文本框金重写了JTextField的setText()方法 * * [ 责责责 留] : * *############################################################################# # */ package com.sunshine.sunsdk.swing; import javax.swing.*; import java.awt.*; import java.awt.event.*; import com.sunshine.sunsdk.system.*;import com.sunshine.sunsdk.swing.*;public class TJMoneyField extends TJTextField implements FocusListener { /**============================================================= ==========** *[## public TJMoneyField () {} ]: 构造函数 *参数:无 *返回:无责 *修符:责 责public *功能:金入本文框,默度 责责责责责责责责责责责6 42 **=================================================================== ====** */ public TJMoneyField () { buildMoneyField ("0.00",true); setLayout (6);//责置部局 } /**============================================================= ==========** *[## public TJMoneyField (String text) {} ]: 构造函数 *参数: String 责责象表示文本框初始化的金 *返回:无责 *修符:责 责public *功能:金入本文框,默度 责责责责责责责责责责责10 **=================================================================== ====** */ public TJMoneyField (String text) { buildMoneyField (text, true); setLayout (10);//责置部局 } /**============================================================= ==========** *[## public TJMoneyField (String text, int length) {} ]: 构造函数 *参数: String 责责象表示文本框初始化的金 * int 责责责量表示文本框的度 *返回:无责 *修符:责 责public *功能:建立一个指定金和度的金入本文框 责责责责责责责责责责责责 **=================================================================== ====** */ public TJMoneyField (String text, int length) { buildMoneyField (text, true); setLayout (length);//责置部局 } /**============================================================= ==========** *[## private void setLayout (int l) {} ]: 构造函数 *参数: int 责责责量表示文本框的度 *返回:无责 *修符:责 责private *功能:置金入本文框的方式 责责责责责责责责责责责责责责和和列数并加焦点责责听 **=================================================================== ====** */ private void setLayout (int l) { this.setColumns(l); //责置文本框列数 43 this.setHorizontalAlignment (JTextField.RIGHT);//责责责置文本右 this.addFocusListener(this);//加焦点责听 } /**============================================================= ==========** *[## private void buildMoneyField (String text, boolean build) {} ]: *参数: String 责责象表示金制作 金本文框责责责责 * boolean 责责责责量表示是新建文本框是焦 点事件用责责 *返回:无责 *修符:责 责private *功能:制作金入本文框 责责责责责责 **=================================================================== ====** */ private void buildMoneyField (String text, boolean build) { //判断金是否合法责责责责责 if(suntools.isNum (text, 11, 0, 9999999.99)) { //去掉金的责责责责'0' text = Double.parseDouble(text) + ""; //判断如果只有一位小数'0'责责 if(text.length() - text.indexOf('.') == 2) { text = Double.parseDouble(text) + "0"; }//Endif super.setText("," + text);//责置文本 }//Endif else { JOptionPane.showMessageDialog(null, "金格式,或责责责责责责责 者是金超出范责责责责责:[ 0-9999999.99 ] ...", "责责", JOptionPane.ERROR_MESSAGE); if(build)//如果是new本生责责责责责 责责责责责责责责,系自退出 System.exit(0); else { super.setText ("0"); this.requestFocus(true);//用使用生,责责责责责责责责责责责重 新入责责 }//Endif }//Endif } /**============================================================= ==========** *[## public String getText () {} ]: 责得文本框 金责 *参数:无 *返回:责 String 责责责象表示文本框的金 *修符:责 责public *功能:得文本框金 责责责责责责责 **=================================================================== ====** */ public String getText () { 44 return super.getText().substring(1); } /**============================================================= ==========** *[## public void setText (String text) {} ]: 责责置文本框金 *参数: String 责责责责责责责责责责象表示要置文本框的金 *返回:无责 *修符:责 责public *功能:置文本框金 责责责责责责责 **=================================================================== ====** */ public void setText (String text) { buildMoneyField (text, false); } /**============================================================= ==========** *FocusListener 责听 **=================================================================== ====** */ public void focusGained (FocusEvent fe) { //焦点责责听 super.setText ("0"); } public void focusLost (FocusEvent fe) { //失去焦点责责听 String t = super.getText(); if(t.length() > 1) t = t.substring(1); buildMoneyField (t, false); } } TJPasswordField.java/** *############################################################################# # * *[ 责 目名] : * [ 公司名 ] : SunshineSOFT *[ 模名责责 ] : 责责责责责责听的密文本框 *[ 文件名 ] : TJPasswordField.java *[ 相文件责责责 ] : *[ 文件功能责责责责] : 责责责责责责听的密文本框 *[ 作者 ] : 责俊 *[ 版本 ] : 1.0 *---------------------------------------------------------------------------- 45 *[ 责 注] : *---------------------------------------------------------------------------- *[ 修改责责 ] : * *[ 日期 ] [版本] [修改人] [修改内容] *2006/04/19 1.0 责 责俊建 *##-------------------------------------------------------------------------- * 版所有责责责(c) 2006-2007, SunshineSOFT Corporation *--------------------------------------------------------------------------## * *[ 函数明责责 ] : * *[## public TJPasswordField(String text) {} ]: *功能: 构造函数 * *[## public TJPasswordField(String text, int column) {} ]: *功能: 构造函数 * *[## public void setLineWidth(int l) {} ]: *功能: 责责责置外框 * * [ 责责责 留] : * *############################################################################# # */ package com.sunshine.sunsdk.swing;import javax.swing.*; import javax.swing.border.*; import java.awt.*; import java.awt.event.*; public class TJPasswordField extends JPasswordField implements MouseListener, FocusListener { private int thickness = 1; public TJPasswordField() { setStyle(); } public TJPasswordField(int col) { super(col); setStyle(); } public TJPasswordField(String text) { super(text); setStyle(); } public TJPasswordField(String text, int column) { super(text, column); setStyle(); 46 } public void setLineWidth(int l) { thickness = l; this.setBorder(new LineBorder(new Color(159, 145, 118), thickness));} private void setStyle() { this.setForeground(new Color( 87, 87, 47)); this.setBackground(new Color(248, 242, 230)); this.setBorder(new LineBorder(new Color(159, 145, 118), thickness)); this.addMouseListener(this); this.addFocusListener(this); } /**============================================================= ==========** *MouseListener 责听 **=================================================================== ====** */ public void mouseClicked (MouseEvent me) { } public void mousePressed (MouseEvent me) { } public void mouseReleased(MouseEvent me) { } public void mouseEntered (MouseEvent me) { this.setBorder(new LineBorder(new Color(241, 171, 84), thickness));} public void mouseExited (MouseEvent me) { this.setBorder(new LineBorder(new Color(159, 145, 118), thickness));} /**============================================================= ==========** *FocusListener 责听 **=================================================================== ====** */ public void focusGained (FocusEvent fe) { this.setBorder(new LineBorder(new Color(241, 171, 84), thickness));} public void focusLost (FocusEvent fe) { this.setBorder(new LineBorder(new Color(159, 145, 118), thickness));} } TJTextField.java 47 /** *############################################################################# # * *[ 责 目名] : * [ 公司名 ] : SunshineSOFT *[ 模名责责 ] : 责责听的文本区域 *[ 文件名 ] : TJTextField.java *[ 相文件责责责 ] : *[ 文件功能责责责责] : 责责听的文本区域 *[ 作者 ] : 责俊 *[ 版本 ] : 1.0 *---------------------------------------------------------------------------- *[ 责 注] : *---------------------------------------------------------------------------- *[ 修改责责 ] : * *[ 日期 ] [版本] [修改人] [修改内容] *2006/04/19 1.0 责 责俊建 *##-------------------------------------------------------------------------- * 版所有责责责(c) 2006-2007, SunshineSOFT Corporation *--------------------------------------------------------------------------## * *[ 函数明责责 ] : * *[## public TJTextArea(int r, int c) {} ]: *功能: 构造函数 * *[ 责责责 留] : * *############################################################################# # */ package com.sunshine.sunsdk.swing; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TJTextArea extends JTextArea implements MouseListener { public TJTextArea(int r, int c) { super(r, c); this.setForeground(new Color(161, 149, 121)); this.setBackground(new Color(233, 227, 214)); this.addMouseListener(this); } /**============================================================= ==========** *MouseListener 责听 **=================================================================== ====** 48 */ public void mouseClicked (MouseEvent me) { } public void mousePressed (MouseEvent me) { } public void mouseReleased(MouseEvent me) { } public void mouseEntered (MouseEvent me) { this.setForeground(new Color( 87, 87, 47)); this.setBackground(new Color(248, 242, 230)); } public void mouseExited (MouseEvent me) { this.setForeground(new Color(161, 149, 121)); this.setBackground(new Color(233, 227, 214)); } } TJTextField.java /** *############################################################################# # * *[ 责 目名] : * [ 公司名 ] : SunshineSOFT *[ 模名责责 ] : 责责听的文本框 *[ 文件名 ] : TJTextField.java *[ 相文件责责责 ] : *[ 文件功能责责责责] : 责责听的文本框 *[ 作者 ] : 责俊 *[ 版本 ] : 1.0 *---------------------------------------------------------------------------- *[ 责 注] : *---------------------------------------------------------------------------- *[ 修改责责 ] : * *[ 日期 ] [版本] [修改人] [修改内容] *2006/04/19 1.0 责 责俊建 *##-------------------------------------------------------------------------- * 版所有责责责(c) 2006-2007, SunshineSOFT Corporation *--------------------------------------------------------------------------## * *[ 函数明责责 ] : * *[## public TJTextField(String text) {} ]: *功能: 构造函数 * *[## public TJTextField(String text, int column) {} ]: *功能: 构造函数 * *[## public void setLineWidth(int l) {} ]: *功能: 责责责置外框 * 49 * [ 责责责 留] : * *############################################################################# # */ package com.sunshine.sunsdk.swing; import javax.swing.*; import javax.swing.border.*; import java.awt.*; import java.awt.event.*; public class TJTextField extends JTextField implements MouseListener, FocusListener { private int thickness = 1; public TJTextField() { setStyle(); } public TJTextField(int col) { super(col); setStyle(); } public TJTextField(String text) { super(text); setStyle(); } public TJTextField(String text, int column) { super(text, column); setStyle(); } public void setLineWidth(int l) { thickness = l; this.setBorder(new LineBorder(new Color(159, 145, 118), thickness)); } private void setStyle() { this.setForeground(new Color( 87, 87, 47)); this.setBackground(new Color(248, 242, 230)); this.setBorder(new LineBorder(new Color(159, 145, 118), thickness)); this.addMouseListener(this); this.addFocusListener(this); } /**============================================================= ==========** *MouseListener 责听 **=================================================================== ====** 50 */ public void mouseClicked (MouseEvent me) { } public void mousePressed (MouseEvent me) { } public void mouseReleased(MouseEvent me) { } public void mouseEntered (MouseEvent me) { this.setBorder(new LineBorder(new Color(241, 171, 84), thickness)); } public void mouseExited (MouseEvent me) { this.setBorder(new LineBorder(new Color(159, 145, 118), thickness)); } /**=======================================================================** *FocusListener 责听 **=======================================================================** */ public void focusGained (FocusEvent fe) { this.setBorder(new LineBorder(new Color(241, 171, 84), thickness)); } public void focusLost (FocusEvent fe) { this.setBorder(new LineBorder(new Color(159, 145, 118), thickness)); } } ViewList.java /** *############################################################################## * *[ 责 目名] : * [ 公司名 ] : SunshineSOFT *[ 模名责责 ] : ViewList控件 *[ 文件名 ] : ViewList.java *[ 相文件责责责 ] : *[ 文件功能责责责责] : 生成和我的差不多的面责责责责责责责责板 *[ 作者 ] : 责俊 *[ 版本 ] : 1.0 *---------------------------------------------------------------------------- *[ 责 注] : *---------------------------------------------------------------------------- *[ 修改责责 ] : * *[ 日期 ] [版本] [修改人] [修改内容] *2006/04/19 1.0 责 责俊建 *##-------------------------------------------------------------------------- * 版所有责责责(c) 2006-2007, SunshineSOFT Corporation 51 *--------------------------------------------------------------------------## * *[ 函数明责责 ] : * *[## public ViewList(int buttons) {} ]: *功能: 构造函数,并制作主面板 * *[## public void remeButtons() {} ]: *功能: 责责责责按空位 * *[## public JButton getButton(String roomNum) {} ]: *功能: 责责得面板中的指定按 * *[## public void setButtonImage(String buttonName, String state) {} ]: *功能: 责责责责置按片 * *[## public void addButton(String name) {} ]: *制作功能按,责责责责责责责责责责责责责责并加入相的模板中,返回JButton方便主程序加责听 * * [ 责责责 留] : * *############################################################################# # */ package com.sunshine.sunsdk.swing;import javax.swing.*; import java.awt.*; import java.util.*; public class ViewList extends JPanel { //放置按的数责责责责 private Hashtable buttons = new Hashtable(); //放置按的面责责责责板 private JPanel panelMain; //ViewList 里面横向按的个数,和行数责责责责责责责责 private int column= 6; private int row= 5; //面板内按数责责责 private int buttonTotal = 30; //按数器责责责责 private int buttonCount = 0; /**============================================================= ==========** *[## public ViewList(int buttons) {} ]:构造函数,并制作主面板 *参数: int buttons 表示ViewList中的按数量责责责 *返回:无责 *修符:责 责public *功能:构造函数, 并制作主面板 52 **=================================================================== ====** */ public ViewList(int buttons) { super(new BorderLayout()); JScrollPane spMain; //定面责责责责责板 //根据按数据算面责责责责责责责责责责责责责板的行数和列数 int vRow = buttons / column; if(vRow > row) {//如果有足的责责按数量,置面责责责责责责责责责责责责板行数, if(buttons % column > 0) {//否使用默行数责责责责责责责 row = 5 row = vRow + 1; }else { row = vRow; }//Endif buttonTotal = buttons;//责得按数责责责 }//Endif //建立按面责责责板 panelMain= new JPanel(new GridLayout(row, 1, 5, 15)); //责责责责责置默背景色 panelMain.setBackground(new Color(248, 242, 230)); spMain = new JScrollPane(panelMain); //加入主面板 this.add("Center", spMain); } /**============================================================= ==========** *[## public void remeButtons() {} ]:责责责责按空位 *参数:无 *返回:无责 *修符:责 责public *功能:按空位,如果按数量不 责责责责责责责责责责责责责足 column * row 责加空JLabel责位, * 不然局责责责责会乱注意,此方法一定要在加完所有按后使用责责责责 **=================================================================== ====** */ public void remeButtons() { if(buttonCount < buttonTotal) { for (int i = 0; i < buttonTotal - buttonCount; i++) { JLabel lb = new JLabel(" "); panelMain.add(lb);//责空位 }//Endfor }//Endif } 53 /**============================================================= ==========** *[## public JButton getButton(String roomNum) {} ]: *参数: String roomNum 责责责责责责象表示按名字,也 就是房号责责 *返回:责 JButton *修符:责 责public *功能:得面 责责责责责责责责责责板中的指定按 **=================================================================== ====** */ public JButton getButton(String roomNum) { return (JButton)buttons.get(roomNum); } /**============================================================= ==========** *[## public void setButtonImage(String buttonName, String state) {} ]: *参数: String buttonName 责责责责责责象表示按在哈希表 中的名责责 * String State 责责责责象表示房状 *返回:无责 *修符:责 责public *功能:置按 责责责责责责片 **=================================================================== ====** */ public void setButtonImage(String buttonName, String state) { String picName = ""; if(state.equals("可供")) picName = "pic/room/prov.gif"; else if(state.equals("占用")) picName = "pic/room/pree.gif"; else if(state.equals("责责")) picName = "pic/room/rese.gif"; else if(state.equals("责点")) picName = "pic/room/clock.gif"; else if(state.equals("责房")) picName = "pic/room/clean.gif"; else if(state.equals("停用")) picName = "pic/room/stop.gif"; ((JButton)buttons.get(buttonName)).setIcon(new ImageIcon(picName)); } /**============================================================= ==========** *[## public void addButton(String name) {} ]: *参数: String name表示功能按的名字责责责责 *返回:责 JButton *修符:责 责public *功能:制作功能按, 责责责责责责责责责责责责责责并加入相的模板中,返回 JButton方便主程序加责责听 54 **=================================================================== ====** */ public JButton addButton(String name) { JButton button = new JButton(name); button.setBorderPainted(false);//责责置按无框责责 button.setContentAreaFilled(false);//责责责责置按背景色透明 button.setHorizontalTextPosition(SwingConstants.CENTER);//责置Ico与文字居中 button.setVerticalTextPosition(SwingConstants.BOTTOM);//责置Ico相责文字的位置 panelMain.add(button); //将按加入按面责责责责责责责板 buttons.put(name, button);//将按存责责入哈希表 buttonCount++; //按数器责责责责+1 return button; } } Swing包.theme包 DarkGoldMetalTheme.java/** *############################################################################# # * *[ 责 目名] : * [ 公司名 ] : SunshineSOFT *[ 模名责责 ] : 暗金色主责责 *[ 文件名 ] : DarkGoldMetalTheme.java *[ 相文件责责责 ] : *[ 文件功能责责责责] : 配置窗口责责责责责责暗金色主 *[ 作者 ] : 责俊 *[ 版本 ] : 1.0 *---------------------------------------------------------------------------- *[ 责 注] : *---------------------------------------------------------------------------- *[ 修改责责 ] : * *[ 日期 ] [版本] [修改人] [修改内容] *2006/04/19 1.0 责 责俊建 *##-------------------------------------------------------------------------- * 版所有责责责(c) 2006-2007, SunshineSOFT Corporation *--------------------------------------------------------------------------## * *[ 函数明责责 ] : * *[## public String getName() {} ]: *功能: 返回主责责名 55 * * [ 责责责 留] : * *############################################################################## */ package com.sunshine.sunsdk.swing.Theme; import javax.swing.*; import javax.swing.plaf.*; import javax.swing.plaf.metal.*; import javax.swing.border.*; import java.awt.*; public class DarkGoldMetalTheme extends DefaultMetalTheme { public String getName() { return "Sandstone"; } private final ColorUIResource primary1 = new ColorUIResource( 87, 87, 47); private final ColorUIResource primary2 = new ColorUIResource(159, 151, 111); private final ColorUIResource primary3 = new ColorUIResource(199, 183, 143); private final ColorUIResource secondary1 = new ColorUIResource(111, 111, 111); private final ColorUIResource secondary2 = new ColorUIResource(184, 173, 151); private final ColorUIResource secondary3 = new ColorUIResource(231, 215, 183); protected ColorUIResource getPrimary1() { return primary1; } protected ColorUIResource getPrimary2() { return primary2; } protected ColorUIResource getPrimary3() { return primary3; } protected ColorUIResource getSecondary1() { return secondary1; } protected ColorUIResource getSecondary2() { return secondary2; } protected ColorUIResource getSecondary3() { return secondary3; } } DesertMetalTheme.java /** *############################################################################## * *[ 责 目名] : * [ 公司名 ] : SunshineSOFT *[ 模名责责 ] : 沙漠色主责责 *[ 文件名 ] : DesertMetalTheme.java *[ 相文件责责责 ] : *[ 文件功能责责责责] : 配置窗口责责责责责责沙漠色主 *[ 作者 ] : 责俊 *[ 版本 ] : 1.0 *---------------------------------------------------------------------------- *[ 责 注] : *---------------------------------------------------------------------------- *[ 修改责责 ] : * *[ 日期 ] [版本] [修改人] [修改内容] 56 *2006/04/30 1.0 责 责俊建 *##-------------------------------------------------------------------------- * 版所有责责责(c) 2006-2007, SunshineSOFT Corporation *--------------------------------------------------------------------------## * *[ 函数明责责 ] : * *[## public String getName() {} ]: *功能: 返回主责责名 * * [ 责责责 留] : * *############################################################################## */ package com.sunshine.sunsdk.swing.Theme; import javax.swing.*; import javax.swing.plaf.*; import javax.swing.plaf.metal.*; import javax.swing.border.*; import java.awt.*; public class DesertMetalTheme extends DefaultMetalTheme { public String getName() { return "Desert"; } private final ColorUIResource primary1 = new ColorUIResource(147, 118, 30); private final ColorUIResource primary2 = new ColorUIResource(219, 177, 50); private final ColorUIResource primary3 = new ColorUIResource(237, 195, 67); private final ColorUIResource secondary1 = new ColorUIResource(170, 121, 53); private final ColorUIResource secondary2 = new ColorUIResource(200, 167, 68); private final ColorUIResource secondary3 = new ColorUIResource(243, 208, 100); protected ColorUIResource getPrimary1() { return primary1; } protected ColorUIResource getPrimary2() { return primary2; } protected ColorUIResource getPrimary3() { return primary3; } protected ColorUIResource getSecondary1() { return secondary1; } protected ColorUIResource getSecondary2() { return secondary2; } protected ColorUIResource getSecondary3() { return secondary3; } } 57 3,sql包 Journal.java /** *############################################################################# # * *[ 责 目名] : * [ 公司名 ] : SunshineSOFT *[ 模名责责 ] : 日志操作理责责 *[ 文件名 ] : Journal.java *[ 相文件责责责 ] : *[ 文件功能责责责责] : 写操作日志到数据责 *[ 作者 ] : 责俊 *[ 版本 ] : 1.1 *---------------------------------------------------------------------------- *[ 责 注] : *---------------------------------------------------------------------------- *[ 修改责责 ] : * *[ 日期 ] [版本] [修改人] [修改内容] *2006/04/19 1.0 责 责俊建 *##-------------------------------------------------------------------------- * 版所有责责责(c) 2006-2007, SunshineSOFT Corporation *--------------------------------------------------------------------------## * *[ 函数明责责 ] : * *[## private Journal() {} ]: *功能: 防止本不能被例化责责责责责责责 * *[## public static String getNowDTime() {} ]: *功能: 返回当前日期责责 * *[## public static boolean writeJournalInfo(String user, String content,int infoIndex) {} ]: *功能: 责责操作日志 * * [ 责责责 留] : * *############################################################################# # */ package com.sunshine.sunsdk.sql; import java.util.*; import com.sunshine.sunsdk.sql.sunsql; public class Journal { public static final int TYPE_LG = 0;//操作责责责登 public static final int TYPE_RT = 1;//房型操作责责责责责 58 public static final int TYPE_RI = 2;//房责责责责责信息操作 public static final int TYPE_US = 3;//客信息责责责责责操作 public static final int TYPE_CZ = 4;//操作置责责责 public static final int TYPE_JF = 5;//责责责置 public static final int TYPE_DA = 6;//数据操作 public static String brief[] = { "操作责责责登", "房型操作责责责责责", "房责责责责责信息操作", "客信息责责责责责操作", "操作置责责责","责责责置","数据操作"}; /**============================================================= ==========** *[## private Journal() {} ]: 构造 函数 *参数:无 *返回:无责 *修符:责 责private *功能:防止本不能被例化 责责责责责责责 **=================================================================== ====** */ private Journal() { } /**============================================================= ==========** *[## public static String getNowDTime() {} ]: 返回当前日期责责 *参数:无 *返回:责 String 责责责责象表示当前系 *修符:责 责public *功能:返回当前日期 责责 **=================================================================== ====** */ public static String getNowDTime() { GregorianCalendar gc = new GregorianCalendar(); return gc.getTime().toLocaleString(); } /**============================================================= ==========** *[## public static boolean writeJournalInfo(String user, String content,int infoIndex) {} ]: *参数: String user表示当前操作责 * String content表示操作内容 * int infoIndex操作型责责 *返回:责 boolean *修符:责 责public *功能:操作日 责责责责责责志 **=================================================================== ====** */ public static boolean writeJournalInfo(String user, String content,int infoIndex) { 59 String dt = getNowDTime();//责得 当前责责 content = user + " 在 " + dt + " " + content;//操作内容 long pk = sunsql.getPrimaryKey();//责责得主 String sqlCode = "insert into record(pk,time,operator,brief,content) values(" + pk + ",'" + dt + "','" + user + "','" + brief[infoIndex] + "','" + content + "')"; if(sunsql.executeUpdate(sqlCode) == 0) {//写操作日志 return false; }//Endif return true; } } sunsql.java /** *############################################################################# # * *[ 责 目名] : * [ 公司名 ] : SunshineSOFT *[ 模名责责 ] : 数据接责责责 *[ 文件名 ] : sunsql.java *[ 相文件责责责 ] : *[ 文件功能责责责责] : 责责接及操作数据 *[ 作者 ] : 责俊 *[ 版本 ] : 1.3 *---------------------------------------------------------------------------- *[ 责 注] : *---------------------------------------------------------------------------- *[ 修改责责 ] : * *[ 日期 ] [版本] [修改人] [修改内容] *2006/03/31 1.0 责 责责俊重新 *2006/04/05 1.1 责 俊添加ODBC责接方式 *2006/04/08 1.2 责 俊添加函数#A, #B, #C, #D *2006/04/25 1.2 责 俊添加函数#E *##-------------------------------------------------------------------------- * 版所有责责责(c) 2006-2007, SunshineSOFT Corporation *--------------------------------------------------------------------------## * *[ 函数明责责 ] : * *[## private sunsql() {} ] : *功能: 防止例化责责责sunsql责象 * * [## public static int executeUpdate(String sql) {} ] : *功能: 责责责责责责责责行数据更改的sql命令,并返回更改所影响的行数 * * [## public static ResultSet executeQuery(String sql) {} ] : *功能: 责责责责责责行数据的select责责责责责责责责责责功能,并返回所得到的果 * 60 *[## public static int recCount(ResultSet rs)) {} ] : *功能: 责责责责责责责责责得指定果集的数量 * *[## public static long getPrimaryKey() {} ] : #A *功能: 通服责责责责责责责责责责责责责责责器当前的得一个主 * *[## public static void initJComboBox (JComboBox cb, String sqlCode) {} ] : #B *功能: 按SQL责责责责句从数据出Items加入JComboBox * *[## public static void initJList (JList jt, String sqlCode) {} ] : #E *功能: 按SQL责责责责责责责责句从数据出数据加入JList * *[## public static void initDTM (DefaultTableModel fdtm, String sqlCode) {} ] : #C *功能: 按SQL责责责责责责责句从数据中得数据(责果集),添加到fdtm中(也可 以责JTable中) * *[## public static int runTransaction (String updateCode[]) {} ] : #D *功能: 利用事责责责责责的模式以updateCode中的sql责责责责责责责责责句数据行更新 * * * [ 责责责 留] : * *[ 数据接责责责责责责责 ] : 责在: 只有用程责责责责责责责责责责责责责责责责责序完全退出数据接才 * 目的: 每次数据操作完成后责责责责责责责责责责都要 * * *############################################################################# # */ package com.sunshine.sunsdk.sql; import java.sql.*; import javax.swing.*; import javax.swing.table.*; import com.sunshine.sunsdk.system.*; public class sunsql { private static Statement ste = null; private static Connection conn = null; static { try { if(sunini.getIniKey ("Default_Link").equals ("1")) { //JDBC责接方式 String user = sunini.getIniKey ("UserID"); String pwd = sunini.getIniKey ("Password"); String ip = sunini.getIniKey ("IP"); String acc = sunini.getIniKey ("Access"); String dbf = sunini.getIniKey ("DBFname"); String url = "jdbc:microsoft:sqlserver://" + ip + ":" + acc + ";" + "databasename=" + dbf; //注册责责 DriverManager.registerDriver (new com.microsoft.jdbc.sqlserver.SQLServerDriver()); //责责责得一个接 61 conn = DriverManager.getConnection (url, user, pwd); } else { //注册责责 //JDBCODBC责接方式 DriverManager.registerDriver (new sun.jdbc.odbc.JdbcOdbcDriver()); //责责责得一个接 conn = DriverManager.getConnection ("jdbc:odbc:" + sunini.getIniKey("LinkName")); } //责责责责责置自提交false conn.setAutoCommit (false); //建立高体责责责 ste = conn.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); } catch (Exception ex) { JOptionPane.showMessageDialog (null, "数据接失责责责责责...", "责责", JOptionPane.ERROR_MESSAGE); System.exit(0); //ex.printStackTrace(); }//End try } /**============================================================= ==========** *[## private sunsql() {} ]:构造函数 *参数:无 *返回:无责 *修符:责 责private *功能:防止例化 责责责sunsql责象 **=================================================================== ====** */ private sunsql(){ } /**============================================================= ==========** *[## public static int executeUpdate(String sql) {} ] : *参数: String 责象, 表示需要行的责责责sql责句 *返回:责 int, 表示此sql责责责责责责责责责责句数据影响了几行 *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能:行数据更改的 责责责责责责责责责sql命令,并返回更改所影响的行数 **=================================================================== ====** */ public static int executeUpdate(String sql) {//System.out.println ("Update SQL : " + sql); int i = 0 ; try { i = ste.executeUpdate(sql) ; 62 conn.commit(); }catch(Exception e) { e.printStackTrace() ; }//End try return i ; } /**============================================================= ==========** *[## public static int runTransaction (String updateCode[]) {} ] : *参数: String[]是字符串数责, 表示需要行的所有责责责责责sql责 句 *返回:责 int, 表示sql责责责责责责句行的情况, (i==数度责责责)责更 新成功 *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能: 责责责责责利用事的模式以updateCode中的sql责责句 数据行更新责责责责责 **=================================================================== ====** */ public static int runTransaction (String updateCode[]) { int ok = 0, i = 0; int row = updateCode.length;//更新责责责责责句的数量 try { for (i = 0; i < row; i++) { ok = ste.executeUpdate (updateCode[i]);//责行 SQL责句 if(ok == 0) {//如果不成功,责跳出循责 System.out.println ("sunsql.runTransaction(): updateCode[" + i + "] 失责" + ok); break; } System.out.println ("sunsql.runTransaction(): updateCode[" + i + "] 成功 " + ok); } //根据量责责 ok 判断上面循是否正常运行完责责责责责责责责责 if(ok == 0) { conn.rollback ();//(ok == 0)表示更新程责责 中出,回数据责责责责责责 System.out.println ("sunsql.runTransaction(): Update data false, rollback"); } else { conn.commit ();//(ok != 0)基本上是 所有SQL责句运行成功, 责责责责责提交数据 System.out.println ("sunsql.runTransaction(): Update finish"); } } catch (Exception ex) { System.out.println ("sunsql.runTransaction(): Update false ..."); } return i; } 63 /**============================================================= ==========** *[## public static ResultSet executeQuery(String sql) {} ] : *参数: String 责象, 表示需要行的责责责sql责句 *返回:责 ResultSet责象, 表示此句责责责责责责责责责责返回的果集 *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能:行数据的 责责责责责责责select责责责责责功能,并返回所 得到的果责责 **=================================================================== ====** */ public static ResultSet executeQuery(String sql) {//System.out.println ("Query SQL : " + sql); ResultSet rs = null ; try { rs = ste.executeQuery(sql) ; }catch(Exception e) { e.printStackTrace() ; }//End try return rs ; } /**============================================================= ==========** *[## public static int recCount(ResultSet rs)) {} ] : *参数: ResultSet 责象, 表示目果责责责责集 *返回:责 int, 表示果责责责责责责责责责集中的个数 *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能:得指定果 责责责责责责责责责责责责集的数量 **=================================================================== ====** */ public static int recCount(ResultSet rrs) { int i = 0; try { if(rrs.getRow() != 0) rrs.beforeFirst(); //while用于算责责rs的责责责责条数 while(rrs.next()) i++; rrs.beforeFirst(); }catch(Exception ex) { ex.printStackTrace(); }//End try return i; } /**============================================================= ==========** *[## public static long getPrimaryKey() {} ] : *参数:无 *返回:责 long, 表示从服责责责责责责责器得的主 64 *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能: 责责责责责责责责责责责责责责责通服器当前的得一个主 **=======================================================================** */ public static long getPrimaryKey() { long pk = 0; try { //责责责责责得服器 ResultSet rs = executeQuery("select getdate()"); rs.next(); pk = rs.getTimestamp(1).getTime(); } catch (Exception ex) { System.out.println ("sunsql.getPrimaryKey (): false"); } return pk; } /**=======================================================================** *[## public static void initJComboBox (JComboBox cb, String sqlCode) {} ] : *参数: JComboBox表示要加数据的下拉框, String责象 表示一条SQL责句 *返回:责 JComboBox, 表示返回一个加好Item的 JComboBox责象 *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能:按 SQL责责责责句从数据出Items加入 JComboBox **=======================================================================** */ public static void initJComboBox (JComboBox cb, String sqlCode) { cb.removeAllItems(); try { ResultSet rs = executeQuery (sqlCode); int row = recCount (rs); rs.beforeFirst (); //从果责责责责责责集中取出Item加入JComboBox中 for (int i = 0; i < row; i++) { rs.next(); cb.addItem (rs.getString (1)); } } catch (Exception ex) { System.out.println ("sunsql.initJComboBox (): false"); } } /**=======================================================================** 65 *[## public static void initJList (JList jt, String sqlCode) {} ] : *参数: JList表示要加数据的列表框, String责象表示一 条SQL责句 *返回:无责 *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能:按 SQL责责责责责责责责句从数据出数据加入JList **=================================================================== ====** */ public static void initJList (JList jt, String sqlCode) { try { ResultSet rs = executeQuery (sqlCode); int row = recCount (rs); String list[] = new String[row]; //从果责责责责责责责责责责责责责集中取出数据存入数中 for (int i = 0; i < row; i++) { rs.next(); list[i] = rs.getString(1); }//Endfor jt.setListData(list);//初始化List } catch (Exception ex) { System.out.println ("sunsql.initJList(): false"); }//Endtry } /**============================================================= ==========** *[## public static void initDTM (DefaultTableModel fdtm, String sqlCode) {} ] : *参数: DefaultTableModel责象表示要添充数据的表模 式 * String责象表示一条SQL责句 *返回:无责 *修符:责 责public static 可以不例化象而直责责责责责责责 接用方法责责责责 *功能:按 SQL责责责责责责责责责责责句从数据中得数据,添加到fdtm中(也可以责JTable中) **=================================================================== ====** */ public static void initDTM (DefaultTableModel fdtm, String sqlCode) { try { ResultSet rs = executeQuery( sqlCode );//责责责责得果集 int row = recCount( rs );//责责责得果 集中有几行数据 ResultSetMetaData rsm =rs.getMetaData();//责得列集 int col = rsm.getColumnCount();//责得列的个数 String colName[] = new String[col]; //取果责责责责责责责责责集中的表名称, 放在colName数中责责 for (int i = 0; i < col; i++) { colName[i] = rsm.getColumnName( i + 1 ); }//End for rs.beforeFirst(); 66 String data[][] = new String[row][col]; //取果责责责责责责责集中的数据, 放在data数中责责 for (int i = 0; i < row; i++) { rs.next(); for (int j = 0; j < col; j++) { data[i][j] = rs.getString (j + 1); //System.out.println (data[i][j]); } }//End for fdtm.setDataVector (data, colName); } catch (Exception ex) { System.out.println ("sunsql.initDTM (): false"); }//End try } } 4)公共责责责责责责的明教程 滑菜责责责 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) {} ]: 67 *功能: 制作按模责责责责责责责责责责板,并加入主模板 * *[## 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事件的按名责责 68 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));//制作按责责责责 69 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 *功能:制作功能按, 责责责责责责责责责责责并加入相的模板中 70 **=======================================================================** */ 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()方法之前使用) **=======================================================================** */ public void initButtonPanelDimension() { for (int i = 0; i < panelconut; i++) { ((JPanel)template.get(i)).setBounds(sm_X, sm_Y, slitherMenuBar_Width, slitherMenuBar_Height - titleHeight * (panelconut - 1)); }//Endfor } /**=======================================================================** *[## public void setInitMenu() {} ]: *参数:无 *返回:无责 *修符:责 责public *功能:置初始化后 责责责责责责责责责责责责责展第一菜(在主窗口的 setVisible()方法之后使用) **=======================================================================** */ public void setInitMenu() { if(panelconut > 0) { JPanel mainMenu = (JPanel)template.get(0);//展责 第一责责责菜 71 int titlesHeight = (panelconut - 1) * titleHeight;//责责责得其它模板 的高度和责责 int height = slitherMenuBar_Height - titlesHeight; mainMenu.setBounds(sm_X, sm_Y, slitherMenuBar_Width, height); //责责责责理其它菜 for (int i = 1; i < panelconut; i++) { ((JPanel)template.get(i)).setBounds(sm_X, sm_Y + height + (i - 1) * titleHeight, slitherMenuBar_Width, titleHeight); }//Endfor }else { String msg = "没有按模责责责责责责责板可。"; JOptionPane.showMessageDialog(null, msg, "责 责",JOptionPane.ERROR_MESSAGE); }//Endif } /**=======================================================================** *[## public void setMenuDimension(int w,int h) {} ]: *参数: int w 表示菜责责责责度,int h 表示菜高责责责度 *返回:无责 *修符:责 责public *功能:置 责责责责责责责责责菜度和高度(在初始化菜责责责责后加入 责件之前使用) **=================================================================== ====** */ public void setMenuDimension(int w,int h) { if(panelconut == 0) { slitherMenuBar_Width = w; slitherMenuBar_Height = h; }else { String msg = "setMenuDimension()方法在加入件之责责责责责责责 前使用。"; JOptionPane.showMessageDialog(null, msg, "警 告",JOptionPane.WARNING_MESSAGE); }//Endif } /**=======================================================================** *[## public void setMenuLocation(int x, int y) {} ]: *参数: int x 表示菜责责责责责责责的横向坐,int y 表示菜责责责的 向坐责 *返回:无责 *修符:责 责public *功能:置 责责责责责责责菜的坐(在初始化菜责责责责责责后加入件 之前使用) **=================================================================== ====** */ public void setMenuLocation(int x, int y) { if(panelconut == 0) { 72 sm_X = x; sm_Y = y; }else { String msg = "setMenuLocation()方法在加入件之前使用责责责责责责责责责责责。"; JOptionPane.showMessageDialog(null, msg, "警 告",JOptionPane.WARNING_MESSAGE); }//Endif } /**============================================================= ==========** *[## public void setTitleHeight(int h) {} ]: *参数: int h 表示按模责责责责责责责责责责板的的高度 *返回:无责 *修符:责 责public *功能:置模 责责责责责责责责责责板按高度(当按有责责责责责责责背景 责责责才使用本方法) **=================================================================== ====** */ public void setTitleHeight(int h) { titleHeight = h; } /**============================================================= ==========** *[## public void setButtonPanelBackground(Color bg) {} ]: *参数: Color 责责责责责责责责责象表示按模板的背景色 *返回:无责 *修符:责 责public *功能:置按模 责责责责责责责责责责板背景色(在初始化菜责责责后加 入件之后使用责责责责责责) **=================================================================== ====** */ public void setButtonPanelBackground(Color bg) { if(panelconut > 0) { for (int i = 0; i < panelconut; i++) { ((JPanel)buttonPanels.get(i)).setBackground(bg); }//Endfor }else { String msg = "setButtonPanelBackground()方法在加入责责责责责 件之后使用。"; JOptionPane.showMessageDialog(null, msg, "警 告",JOptionPane.WARNING_MESSAGE); }//Endif } /**============================================================= ==========** *[## public String getSelectButtonName() {} ]: *参数:无 *返回:责 String 责责责责责责责责责责责责象表示触事件的功能按的名字 *修符:责 责public 73 *功能:得中的按名 责责责责责责责责 **=======================================================================** */ public String getSelectButtonName() { return selectButtonName; } /**=======================================================================** *[## private void slither(int index) {} ]: *参数:无 *返回:无责 *修符:责 责private *功能:理 责责责责责责责责菜滑效果 **=======================================================================** */ private void slither(int index) { //责责责责责责责责得其它的高度和 int sp_h = slitherMenuBar_Height - titleHeight * (panelconut - 1); if(index == selectPanelNumber) {//如果是当前面板 责责责不理 return; }else if(index > selectPanelNumber) {//菜责责责责责上移作 int sp_y = titleHeight * (selectPanelNumber + 1); for (int i = sp_h; i >= titleHeight; i --) { //当前展责责责责责面板起 ((JPanel)template.get(selectPanelNumber)).setSize(slitherMenuBar_Width, i); //责责责责责责责责责责责责责责责责理当前展面板与将要展面板之的 for (int j = selectPanelNumber + 1; j < index; j++) { int other_Y = ((JPanel)template.get(j)).getY() - 1; ((JPanel)template.get(j)).setLocation(sm_X, other_Y); }//Endfor //新面板展责 int index_Y = ((JPanel)template.get(index)).getY() - 1; int index_H = ((JPanel)template.get(index)).getHeight() + 1; ((JPanel)template.get(index)).setBounds(sm_X, index_Y, slitherMenuBar_Width, index_H); }//Endfor }else if(index < selectPanelNumber) {//下移作责责 int sp_y = titleHeight * (selectPanelNumber - 2); for (int i = sp_h; i >= titleHeight; i --) { //当前展责责责责责面板起 int spy = ((JPanel)template.get(selectPanelNumber)).getY() + 1; ((JPanel)template.get(selectPanelNumber)).setBounds(sm_X, spy, slitherMenuBar_Width, i); //责责责责责责责责责责责责责责责责理当前展面板与将要展面板之的 for (int j = selectPanelNumber - 1; j > index; j--) { 74 int other_Y = ((JPanel)template.get(j)).getY() + 1; ((JPanel)template.get(j)).setLocation(sm_X, other_Y); }//Endfor //新面板展责 int index_H = ((JPanel)template.get(index)).getHeight() + 1; ((JPanel)template.get(index)).setSize(slitherMenuBar_Width, index_H); }//Endfor }//Endif this.validate();//确定当前面板责责化 } /**=======================================================================** *ActionListener 责听 **=======================================================================** */ public void actionPerformed ( ActionEvent ae ) { //责责责责责责责得触事件的按Name selectButtonName = ((JButton)ae.getSource()).getName(); if(selectButtonName != null) {//不空的责责责责责责责责责责责责就是按 //责责责责责责责责得被中模板的序号 selectPanelNumberNew = Integer.parseInt(selectButtonName); //责责责责责责理菜滑效果 slither(selectPanelNumberNew); selectPanelNumber = selectPanelNumberNew; } else { //责责责责责得功能按的名字 selectButtonName = ((JButton)ae.getSource()).getText(); }//Endif } } TestSlitherMenu.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TestSlitherMenu extends JFrame implements ActionListener, MouseListener { JTextField tf; JButton bt; SlitherMenu sm1, sm2, sm3; JPanel panelMain, panelMenu; public TestSlitherMenu() { 75 tf = new JTextField("责里是防QQ的滑菜责责责责责责责责的演示程序");bt = new JButton("责责责责责责责责俊在将里祝来成:强yue han ka ma ke *^_^* "); panelMain = new JPanel(new BorderLayout(20, 20)); panelMenu = new JPanel(new GridLayout(1, 3)); sm1 = new SlitherMenu(); sm2 = new SlitherMenu(); sm3 = new SlitherMenu(); //第一个菜////////////////////////////////责 sm1.setMenuLocation(30,10);//责责置坐 sm1.setMenuDimension(160, 400);//责置大小 sm1.addPanel("I第一个按模责责责板", "", 0 , 5);sm1.addButton("pic/s01.gif", "第1-1个功能", "责第一个提示", 0);sm1.addButton("pic/s02.gif", "第1-2个功能", "责第二个提示", 0);sm1.addButton("pic/s03.gif", "第1-3个功能", "责第三个提示", 0);sm1.addButton("pic/s04.gif", "第1-4个功能", "责第四个提示", 0);sm1.addButton("pic/s05.gif", "第1-5个功能", "责第五个提示", 0);sm1.addPanel("I第二个按模责责责板", "", 1 , 4);sm1.addButton("pic/s06.gif", "第2-1个功能", "责第2-1个提示", 1);sm1.addButton("pic/s07.gif", "第2-2个功能", "责第2-2个提示", 1);sm1.addPanel("I第三个按模责责责板", "", 2 , 5);sm1.addButton("pic/s08.gif", "第3-1个功能", "责第3-1个提示", 2);sm1.addButton("pic/s09.gif", "第3-2个功能", "责第3-2个提示", 2);sm1.addButton("pic/s10.gif", "第3-3个功能责", "第3-3个提示", 2);sm1.addPanel("I第五个按模责责责板", "", 3 , 5);sm1.addButton("pic/s11.gif", "第4-1个功能", "责第4-1个提示", 3);sm1.addPanel("I没有第四个模板", "", 4 , 5);sm1.addButton("pic/s12.gif", "第5-1个功能", "责第5-1个提示", 4);sm1.addButton("pic/s13.gif", "第5-2个功能", "责第5-2个提示", 4);sm1.addButton("pic/s14.gif", "第5-3个功能", "责第5-3个提示", 4);sm1.addButton("pic/s15.gif", "第5-4个功能", "责第5-4个提示", 4);sm1.addPanel("I哈哈", "", 5 , 5); sm1.addButton("pic/s16.gif", "什责责责责也没有", "指我干嘛,", 5);sm1.setButtonPanelBackground(new Color(184, 207, 229)); //第二个菜////////////////////////////////责 sm2.setMenuLocation(40,10);//责责置坐 sm2.setMenuDimension(128, 400);//责置大小 sm2.setTitleHeight(35); sm2.addPanel("II第一个按模责责责板", "pic/titlebar021.gif", 0 , 5); sm2.addButton("pic/s01.gif", "第A-1个功能责", "第一个提示", 0);sm2.addButton("pic/s02.gif", "第A-2个功能责", "第二个提示", 0);sm2.addButton("pic/s03.gif", "第A-3个功能责", "第三个提示", 0);sm2.addPanel("II第二个按模责责责板", "pic/titlebar021.gif", 1 , 4); sm2.addButton("pic/s04.gif", "第B-1个功能责", "第2-1个提示", 1);sm2.addButton("pic/s05.gif", "第B-2个功能责", "第2-2个提示", 1);sm2.addButton("pic/s06.gif", "第B-3个功能责", "第2-3个提示", 1);sm2.addButton("pic/s07.gif", "第B-4个功能责", "第2-4个提示", 1);sm2.addPanel("II第三个按模责责责板", "pic/titlebar021.gif", 2 , 5); sm2.addButton("pic/s08.gif", "第C-1个功能责", "第3-1个提示", 2);sm2.addButton("pic/s09.gif", "第C-2个功能责", "第3-2个提示", 2);sm2.addButton("pic/s10.gif", "第C-3个功能责", "第3-3个提示", 2);sm2.addPanel("II哈哈", "pic/titlebar021.gif", 3 , 6); sm2.addButton("pic/s11.gif", "第D-1个功能责", "第4-1个提示", 3);sm2.addButton("pic/s12.gif", "第D-1个功能责", "第5-1个提示", 3); 76 sm2.addButton("pic/s13.gif", "第D-2个功能责", "第5-2个提示", 3);sm2.addButton("pic/s14.gif", "第D-3个功能责", "第5-3个提示", 3);sm2.addButton("pic/s15.gif", "第D-4个功能责", "第5-4个提示", 3);sm2.addButton("pic/s16.gif", "D什责责责责也没有", "指我干嘛,", 3);sm2.setButtonPanelBackground(new Color(222, 210, 252)); //第三个菜////////////////////////////////责 sm3.setMenuLocation(30,10);//责责置坐 sm3.setMenuDimension(123, 400);//责置大小 sm3.setTitleHeight(32); sm3.addPanel("III第一个按模责责责板", "pic/title.gif", 0 , 5);sm3.addButton("pic/s01.gif", "第A-1个功能责", "第一个提示", 0);sm3.addButton("pic/s02.gif", "第A-2个功能责", "第二个提示", 0);sm3.addButton("pic/s03.gif", "第A-3个功能责", "第三个提示", 0);sm3.addPanel("III第二个按模责责责板", "pic/title.gif", 1 , 4);sm3.addButton("pic/s04.gif", "第B-1个功能责", "第2-1个提示", 1);sm3.addButton("pic/s05.gif", "第B-2个功能责", "第2-2个提示", 1);sm3.addButton("pic/s06.gif", "第B-3个功能责", "第2-3个提示", 1);sm3.addButton("pic/s07.gif", "第B-4个功能责", "第2-4个提示", 1);sm3.addPanel("III第三个按模责责责板", "pic/title.gif", 2 , 5);sm3.addButton("pic/s08.gif", "第C-1个功能责", "第3-1个提示", 2);sm3.addButton("pic/s09.gif", "第C-2个功能责", "第3-2个提示", 2);sm3.addButton("pic/s10.gif", "第C-3个功能责", "第3-3个提示", 2);sm3.addPanel("III第五个按模责责责板", "pic/title.gif", 3 , 5);sm3.addButton("pic/s11.gif", "第D-1个功能责", "第4-1个提示", 3);sm3.addPanel("III没有第四个模板", "pic/title.gif", 4 , 5);sm3.addButton("pic/s12.gif", "第D-1个功能责", "第5-1个提示", 4);sm3.addButton("pic/s13.gif", "第D-2个功能责", "第5-2个提示", 4);sm3.addButton("pic/s14.gif", "第D-3个功能责", "第5-3个提示", 4);sm3.addButton("pic/s15.gif", "第D-4个功能责", "第5-4个提示", 4);sm3.addPanel("III哈哈", "pic/title.gif", 5 , 5);sm3.addButton("pic/s16.gif", "E什责责责责也没有", "指我干嘛,", 5);sm3.setButtonPanelBackground(Color.WHITE);////////////////////////////////////sm1.initButtonPanelDimension(); sm2.initButtonPanelDimension(); sm3.initButtonPanelDimension(); sm1.addMouseListener(this); sm2.addMouseListener(this); sm3.addMouseListener(this); bt.addActionListener(this); panelMenu.add(sm1); panelMenu.add(sm2); panelMenu.add(sm3); panelMain.add("North", tf); panelMain.add("South", bt); panelMain.add("Center", panelMenu);tf.setHorizontalAlignment( JTextField.CENTER );tf.setEditable(false); 77 this.setContentPane(panelMain); this.setBounds(100, 50, 650, 600); this.setVisible(true); sm1.setInitMenu(); sm2.setInitMenu(); sm3.setInitMenu(); } public void actionPerformed (ActionEvent ae) { System.out.println (":)" + sm1.getSelectButtonName()); } /**============================================================= ==========** *MouseListener 责听 **=================================================================== ====** */ public void mouseClicked (MouseEvent me) { Object o = me.getSource(); //if(o == sm1) { System.out.println (sm1.getSelectButtonName()); //} if(o == sm2) { System.out.println (sm2.getSelectButtonName()); } if(o == sm3) { System.out.println (sm3.getSelectButtonName()); } } public void mousePressed (MouseEvent me) {} public void mouseReleased(MouseEvent me) {} public void mouseEntered (MouseEvent me) {} public void mouseExited (MouseEvent me) {} public static void main (String sd[]) { new TestSlitherMenu(); } } 78 79

本文档为【酒店管理系统源代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_668482
暂无简介~
格式:doc
大小:329KB
软件:Word
页数:172
分类:互联网
上传时间:2017-09-17
浏览量:47