将不定期开放“人人都说Swing丑,唯我独爱它—Swing高仿QQ” 源码 SwingQQjava 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /** * 初始化窗口中Banner名字 */ private void initBannerName() { //读取当前文件夹里所有文件 String[] fileNames = new File(ClientConfig.BANNER_DIR).list(new BannerFilter()); int count = fileNames.length; if(count > 0){ int index = new Random().nextInt(count); bannerName = fileNames[index]; } } public SystemTrayIcon getTray() { if (this.loginFrame != null) { return this.loginFrame.getTrayIcon(); } return null; } /** * 取得当前皮肤 * @return */ public Skin getCurrentSkin() { if (currentSkin != null) { return currentSkin; } else { this.loadAllSkin(); return currentSkin = skinMap.get(ClientConfig.DEFAULT_SKIN_NAME.toUpperCase()); } } /** * 取得皮肤 * @param name - 皮肤的名称 * @return */ public Skin getSkin(String skinName){ return skinMap.get(skinName.toUpperCase()); } /** * 取得所有皮肤的返回Map集合类型数据 * @return */ public Map<String, Skin> getAllSkins(){ return skinMap; } /** * 取得Banner文件名 * @return */ public String getBannerName(){ return this.bannerName; } /** * 返回当前用户对象 * @return */ public User getCurrentUser(){ return currentUser; } /** * 返回历史登录列表 * @return */ public List<String> getLoginHistory(){ return loginHistory; } /** * 返回系统配置 * @return */ public Config getConfig(){ return config; } /** * 返回登录配置 * @return */ public Config getLoginConfig(){ return loginConfig; } public LoadingFrame getLoadingFrame(){ return this.loadingFrame; } /** * 取得登录的主窗口对象 * @return */ public MainFrame getMainFrame(){ return mainFrame; } public void setMainFrame(MainFrame mainFrame) { this.mainFrame = mainFrame; } public void setLoadingFrame(LoadingFrame loadingFrame) { this.loadingFrame = loadingFrame; } /** * 进行密码加密 * @param savedPassword * @return */ public String getPasswordTextWhenSaved(String savedPassword){ return Long.toHexString(Checker.compute(savedPassword, "CRC-32")); } public XMPPConnection getConnection() { return connection; } /** * 返回历史用户账号 * @return */ public String getHistoryUserString() { return loginHistory.toString().replaceAll("\\[|\\]| ", ""); } /** * 删除历史用户 * @param name */ public void removeHistoryUser(String username){ loginHistory.remove(username); loginConfig.remove(username + ClientConfig.PASSWORD_KEY); loginConfig.remove(username + ClientConfig.AUTO_LOGIN_KEY); loginConfig.setPropertie(ClientConfig.LOGIN_HISTORY, getHistoryUserString()); loginConfig.saveConfig(); } /** * 输出错误提示信息 * @param title * @param message * @param isError */ public void showMessageBeforeLogin(String title, String message, boolean isError){ JAMessageBox messageBox ; if (isError) { messageBox = JAMessageBox.createErrorMessageBox(this.loginFrame, title, message); }else { messageBox = JAMessageBox.createInformationMessageBox(this.loginFrame, title, message); } Image image = new ImageIcon(ClientConfig.BANNER_DIR + ClientConfig.FILE_SEP + this.bannerName).getImage(); messageBox.setIconImage(ClientUtil.getImage("Icon18x18.png")); messageBox.setBackgroundImage(image); messageBox.open(); } private void load(){ String history = loginConfig.getProperty(ClientConfig.LOGIN_HISTORY); String[] historyList; int count = 0; boolean isAuto = false; String autoerrorMsg = null; if(history != null && (historyList = history.split(ClientConfig.USER_LIST_SEP)).length > 0){ for(String name: historyList){ if(User.isAllowedName(name)){ loginHistory.add(name); count++; } if(count >= ClientConfig.MAX_HISTORY_USER_COUNT){ break; } } } if(!loginHistory.isEmpty()){ String first = loginHistory.get(0); isAuto = Boolean.parseBoolean(loginConfig.getProperty(first + ClientConfig.AUTO_LOGIN_KEY, "false")); if(isAuto){ String savedPassword = loginConfig.getProperty(first + ClientConfig.PASSWORD_KEY); if(savedPassword == null){ isAuto = false; }else{ try { this.connection.login(first, savedPassword, "my_pc_client"); //取得当前用户相关的好友 userRoster=connection.getRoster(); userRoster.setSubscriptionMode(Roster.SubscriptionMode.manual); vcard = new VCard(); vcard.load(connection, "1234@sh-711701-00039/my_pc_client"); } catch (Exception e) { if ("Not connected to server.".equalsIgnoreCase(e.getMessage())) { showMessageBeforeLogin(Resources.getString("title.error"), Resources.getString("message.server.unavailable"), true); } else if ("not-authorized(401)".equalsIgnoreCase(e.getMessage())) { showMessageBeforeLogin(Resources.getString("title.error"), Resources.getString("message.loging.failed"), true); } System.out.println("e.getMessage()" + e.getMessage());; } return; } } } if(isAuto) { afterLoginSuccess(); } else{ loginFrame = new LoginFrame(this); if(autoerrorMsg != null) { if(currentUser == null) { loginFrame.requestUser(); } else { loginFrame.requestPassword(true); } showMessageBeforeLogin("\u767B\u9646", autoerrorMsg, true); } } } /** * 登录验证 * @param name - 登录账号 * @param password - 登录密码 */ public void login(String name , String password){ String errorMsg = null; if (!User.isAllowedName(name)) { errorMsg = Resources.getString("message.username.error"); this.loginFrame.requestUser(); }else if (!User.isAllowedPassword(password.trim())) { errorMsg = Resources.getString("message.password.error"); this.loginFrame.requestPassword(true); }else if (!User.isPasswordLength(password)) { errorMsg = User.PASSWORD_LENGTH_ERROR; this.loginFrame.requestPassword(true); }else { //系统保存的密码 String savedPassword = loginConfig.getProperty(name + ClientConfig.PASSWORD_KEY); boolean userInput = false; //判断 if (savedPassword != null && password.equals(getPasswordTextWhenSaved(savedPassword))) { userInput = true; } else { savedPassword = password; userInput = true; } if(userInput){ try { this.connection.login(name, savedPassword, "my_pc_client"); //修改验证方式 userRoster=connection.getRoster(); userRoster.setSubscriptionMode(Roster.SubscriptionMode.manual); } catch (Exception e) { if ("Not connected to server.".equalsIgnoreCase(e.getMessage())) { showMessageBeforeLogin(Resources.getString("title.error"), Resources.getString("message.server.unavailable"), true); } else if ("not-authorized(401)".equalsIgnoreCase(e.getMessage())) { showMessageBeforeLogin(Resources.getString("title.error"), Resources.getString("message.loging.failed"), true); } return; } } } if(errorMsg != null) { currentUser = null; showMessageBeforeLogin(Resources.getString("title.error"), errorMsg, true); } else { loadingFrame = new LoadingFrame(loginFrame, StartRunning.this); //currentUser.setAutoLogin(loginFrame.isAutoLogin()); //currentUser.setSavePassword(loginFrame.isSavePassword()); loginHistory.remove(name); loginHistory.add(0, name); loginConfig.remove(name + ClientConfig.AUTO_LOGIN_KEY); loginConfig.remove(name + ClientConfig.PASSWORD_KEY); if(loginHistory.size() > ClientConfig.MAX_HISTORY_USER_COUNT) { loginHistory = loginHistory.subList(0, ClientConfig.MAX_HISTORY_USER_COUNT); } loginConfig.setPropertie(ClientConfig.LOGIN_HISTORY, getHistoryUserString()); loginConfig.saveConfig(); //加载本地个人数据数据库 LocalDataConnection.getInstance(name); afterLoginSuccess(); } //为了测试所把上面一行加到此处 //afterLoginSuccess(); } /** * 登录成功则初始化相关的数据 */ private void afterLoginSuccess(){ //当前窗口对象不为空时 if (loginFrame != null) { //关闭当前登录界面 loginFrame.dispose(); //loginFrame = null; } //加载所有皮肤 loadAllSkin(); // if (loadingFrame != null) { //关闭当前登录界面 loadingFrame.dispose(); } mainFrame = new MainFrame(this); changeSkin(this.getSkin(config.getProperty(ClientConfig.SKIN_NAME, ClientConfig.DEFAULT_SKIN_NAME)), true); if (this.vcard != null) { //this.mainFrame.setUserVCard(vcard); } //发送在线请求 Presence presence = new Presence(Presence.Type.available,"",1,Presence.Mode.available); getConnection().sendPacket(presence); vcard = new VCard(); try { vcard.load(connection, "1236@sh-711701-00039"); //this.mainFrame.setUserVCard(vcard); } catch (XMPPException e) { e.printStackTrace(); } //changeSkin(getSkin(config.getProperty(ClientConfig.SKIN_NAME, ClientConfig.DEFAULT_SKIN_NAME)), true); //回收垃圾 startGC(); } /** * 关闭闪屏 */ private void closeSplash(){ SplashScreen splash = SplashScreen.getSplashScreen(); if(splash != null){ splash.close(); } } /** * 退出系统 */ public void exit(){ if(gcTimer != null){ gcTimer.stop(); } if(mainFrame != null){ config.setPropertie(ClientConfig.TITLE_OPAQUE, String.valueOf(mainFrame.isTitleOpaque())); config.setPropertie(ClientConfig.SKIN_ALPHA, String.valueOf(mainFrame.getImageAlpha())); config.setPropertie(ClientConfig.SKIN_MODE, String.valueOf(mainFrame.getImageDisplayMode())); config.setPropertie(ClientConfig.SKIN_NAME, currentSkin == null? ClientConfig.DEFAULT_SKIN_NAME : currentSkin.getName()); //config.setPropertie(ClientConfig.TABS_FOREGROUND, mainFrame.getTabForegroundDes()); //config.setPropertie(ClientConfig.STATUS_FOREGROUND, mainFrame.getStatusForegroundDes()); boolean maximized = (mainFrame.getExtendedState() & JAFrame.MAXIMIZED_BOTH) != 0; config.setPropertie(ClientConfig.WINDOW_MAXIMIZED, String.valueOf(maximized)); if(UIUtil.isTranslucencySupported()) { config.setPropertie(ClientConfig.WINDOW_ALPHA, String.valueOf(AWTUtilities.getWindowOpacity(mainFrame))); } if(!maximized) { config.setPropertie(ClientConfig.WINDOW_SIZE, ClientUtil.sizeToString(mainFrame.getSize())); } } config.saveConfig(); System.exit(0); } public Roster getUserRoster() { return this.userRoster; } public ImageIcon getSysIcon() { return this.sysIcon; } /** * 返回的IM目录为当前用户(user.home)。 * user.home是所有用户特定的文件被放置在一个多用户系统中运行IM。 * * @return */ public static String getIMUserHome() { return USER_IM_HOME; } /** * 初始化相关目录,如果不存在创建相关的目录 * @param directoryHome - IM目录 * @param directoryName - 目录名称 * @return 返回相关的File对象 */ private static synchronized File initializeDirectory(File directoryHome, String directoryName){ File targetDir = new File(directoryHome, directoryName).getAbsoluteFile(); if(!targetDir.exists()){ targetDir.mkdirs(); } return targetDir; } /** * 初始化相关目录,如果不存在创建相关的目录 * * @param directoryName - 目录名称 * @return 返回相关的File对象 */ private static synchronized File initializeDirectory(String directoryName){ return initializeDirectory(new File(USER_IM_HOME), directoryName); } /** * 返回IM安装的Bin目录 , bin目录包含着启动IM的所需脚本 * @return */ public static File getBinDirectory() { if (BIN_DIRECTORY == null ) { BIN_DIRECTORY = initializeDirectory("bin"); } return BIN_DIRECTORY; } /** * 返回IM安装的资源目录。 * 资源目录包含了所有本地库运行所需的操作系统特定的操作,如托盘支持。 * 您可以将其他本地在这个目录库,如果你想拥有它们放置到system.library.path。 * @return */ public static File getResourceDirectory() { if (RESOURCE_DIRECTORY == null ) { RESOURCE_DIRECTORY = initializeDirectory("resources"); } return RESOURCE_DIRECTORY; } /** * 返回日志目录中。日志目录包含所有IM的调试和错误文件。 * * @return 日志目录 */ public static File getLogDirectory() { if (LOG_DIRECTORY == null ) { LOG_DIRECTORY = initializeDirectory("logs"); } return LOG_DIRECTORY; } /** * 返回皮肤目录。皮肤目录包含所有IM的皮肤。 * * @return 皮肤目录 */ public static File getSkinDirectory() { if (SKIN_DIRECTORY == null ){ SKIN_DIRECTORY = initializeDirectory("skin"); } return SKIN_DIRECTORY; } /** * 返回配置目录。配置目录包含所有IM的相关配置文件。 * * @return 配置目录 */ public static File getConfigDirectory() { if (CONFIG_DIRECTORY == null ) { CONFIG_DIRECTORY = initializeDirectory("config"); } return CONFIG_DIRECTORY; } /** * Banner文件过滤流 * @author 东泽 2012-06-19 * */ private class BannerFilter implements FilenameFilter{ public boolean accept(File dir, String name){ return name.toLowerCase().endsWith(ClientConfig.DOT_PNG); } } /** * @param args */ public static void main(String[] args) { System.setProperty("sun.java2d.noddraw", "true"); ToolTipManager.sharedInstance().setInitialDelay(200); UIUtil.setPopupMenuConsumeEventOnClose(false); if(Util.isWindows()){ UIUtil.initToolTipForSystemStyle(); } UIUtil.hideInputRect(); EventQueue.invokeLater(new Runnable(){ public void run(){ //SplashProcess.start(); new StartRunning(); } }); }} 支持一个 Swing现在实际用处不多啊 人人都说Swing丑,唯我独爱它—Swing高仿QQ这个东西只能说一种爱好与兴趣吧!或是用来研究java里面一些如一些MVC模型、适配器模式等等还是不错的。 人人都说Swing丑,唯我独爱它—Swing高仿QQ这个东西只能说一种爱好与兴趣吧!或是用来研究java里面一些如一些MVC模型、适配器模式等等还是不错的。qq这个还是很不错的 能学到很多东西 发个截图看看 人人都说Swing丑,唯我独爱它—Swing高仿QQ这个东西只能说一种爱好与兴趣吧!或是用来研究java里面一些如一些MVC模型、适配器模式等等还是不错的。qq这个还是很不错的 能学到很多东西 发个截图看看请点击下面文字人人都说Swing丑,唯我独爱它—Swing高仿QQ 楼主 求源码? 给我好吗 我拿来完成设计。邮箱[email protected] 楼主 源码可以学习学习吗 ?求源码,[email protected] 人类应该朝着前进的方向走因为Java不适合做界面 而且swing确实不好看即便你能弄好看了 如果换别的语言 时间可能会省去一大半就像总说什么 不使用IDE也能开发程序 这是反人类文明的那样还用什么面向对象呢 还用什么编程语言呢 还用什么计算机呢 楼主求这个源代码!我刚学这个Swing,借鉴学习下!邮箱[email protected] 楼主求源代码。万分感谢啊!!![email protected] 楼主求源代码。万分感谢啊!!![email protected]楼主求源代码。万分感谢啊!!![email protected]楼主求源代码。万分感谢啊!!![email protected] 楼主能给个源代码不??wgzhenyuan@sina,com 感谢楼主 源码算了吧,做界面,图片搞好就行了。楼主也就是把QQ截了个图,再PS修一下而已。楼主对Swing的应用也就是拼凑了一下组件而已。Swing界面开发的精髓是LAF,想成为真正的Swing高手,还是写个完整的LAF更有效果。老是用自己认为的方式模拟QQ界面,只是使用了Swing的皮毛而已。就像JAVA诞生初期,很多人骂JAVA效率低一样。那都是程序员老是用自认为的方式使用JAVA的缘故。真正用Java搞界面还是老外的例子更COOL! 构造函数的入门问题 CachedRowSet怎么实例化对象 关于一个synchronized的问题 搞了两年多java了,结果今天才发现,实在是羞愧得很呀 请问各位都使用什么JAVA开发环境? help 关于JBuilder8的安装 BAS 4.51 的 注册号是什么? 有人问我:何为面向对象编程?我给不出确切或形象的说法。谢!vb、pb等开发工具是不是面向对象编程的语言。 请问:我用JavaMail收下的邮件主题,发信人姓名不能正常显示。。。。。 一个java程序的疑问 if(ch>>>8==0)与if(ch<=255)两句的区别?
* 初始化窗口中Banner名字
*/
private void initBannerName() {
//读取当前文件夹里所有文件
String[] fileNames = new File(ClientConfig.BANNER_DIR).list(new BannerFilter());
int count = fileNames.length;
if(count > 0){
int index = new Random().nextInt(count);
bannerName = fileNames[index];
}
}
public SystemTrayIcon getTray() {
if (this.loginFrame != null) {
return this.loginFrame.getTrayIcon();
}
return null;
}
/**
* 取得当前皮肤
* @return
*/
public Skin getCurrentSkin() {
if (currentSkin != null) {
return currentSkin;
} else {
this.loadAllSkin();
return currentSkin = skinMap.get(ClientConfig.DEFAULT_SKIN_NAME.toUpperCase());
}
}
/**
* 取得皮肤
* @param name - 皮肤的名称
* @return
*/
public Skin getSkin(String skinName){
return skinMap.get(skinName.toUpperCase());
}
/**
* 取得所有皮肤的返回Map集合类型数据
* @return
*/
public Map<String, Skin> getAllSkins(){
return skinMap;
}
/**
* 取得Banner文件名
* @return
*/
public String getBannerName(){
return this.bannerName;
}
/**
* 返回当前用户对象
* @return
*/
public User getCurrentUser(){
return currentUser;
}
/**
* 返回历史登录列表
* @return
*/
public List<String> getLoginHistory(){
return loginHistory;
} /**
* 返回系统配置
* @return
*/
public Config getConfig(){
return config;
}
/**
* 返回登录配置
* @return
*/
public Config getLoginConfig(){
return loginConfig;
}
public LoadingFrame getLoadingFrame(){
return this.loadingFrame;
}
/**
* 取得登录的主窗口对象
* @return
*/
public MainFrame getMainFrame(){
return mainFrame;
}
public void setMainFrame(MainFrame mainFrame) {
this.mainFrame = mainFrame;
}
public void setLoadingFrame(LoadingFrame loadingFrame) {
this.loadingFrame = loadingFrame;
}
/**
* 进行密码加密
* @param savedPassword
* @return
*/
public String getPasswordTextWhenSaved(String savedPassword){
return Long.toHexString(Checker.compute(savedPassword, "CRC-32"));
}
public XMPPConnection getConnection() {
return connection;
}
/**
* 返回历史用户账号
* @return
*/
public String getHistoryUserString() {
return loginHistory.toString().replaceAll("\\[|\\]| ", "");
}
/**
* 删除历史用户
* @param name
*/
public void removeHistoryUser(String username){
loginHistory.remove(username);
loginConfig.remove(username + ClientConfig.PASSWORD_KEY);
loginConfig.remove(username + ClientConfig.AUTO_LOGIN_KEY);
loginConfig.setPropertie(ClientConfig.LOGIN_HISTORY, getHistoryUserString());
loginConfig.saveConfig();
}
/**
* 输出错误提示信息
* @param title
* @param message
* @param isError
*/
public void showMessageBeforeLogin(String title, String message, boolean isError){
JAMessageBox messageBox ;
if (isError) {
messageBox = JAMessageBox.createErrorMessageBox(this.loginFrame, title, message);
}else {
messageBox = JAMessageBox.createInformationMessageBox(this.loginFrame, title, message);
}
Image image = new ImageIcon(ClientConfig.BANNER_DIR + ClientConfig.FILE_SEP + this.bannerName).getImage();
messageBox.setIconImage(ClientUtil.getImage("Icon18x18.png"));
messageBox.setBackgroundImage(image);
messageBox.open();
}
private void load(){
String history = loginConfig.getProperty(ClientConfig.LOGIN_HISTORY);
String[] historyList;
int count = 0;
boolean isAuto = false;
String autoerrorMsg = null;
if(history != null && (historyList = history.split(ClientConfig.USER_LIST_SEP)).length > 0){
for(String name: historyList){
if(User.isAllowedName(name)){
loginHistory.add(name);
count++;
}
if(count >= ClientConfig.MAX_HISTORY_USER_COUNT){
break;
}
}
}
if(!loginHistory.isEmpty()){
String first = loginHistory.get(0);
isAuto = Boolean.parseBoolean(loginConfig.getProperty(first + ClientConfig.AUTO_LOGIN_KEY, "false"));
if(isAuto){
String savedPassword = loginConfig.getProperty(first + ClientConfig.PASSWORD_KEY);
if(savedPassword == null){
isAuto = false;
}else{
try {
this.connection.login(first, savedPassword, "my_pc_client");
//取得当前用户相关的好友
userRoster=connection.getRoster();
userRoster.setSubscriptionMode(Roster.SubscriptionMode.manual);
vcard = new VCard();
vcard.load(connection, "1234@sh-711701-00039/my_pc_client");
} catch (Exception e) {
if ("Not connected to server.".equalsIgnoreCase(e.getMessage())) {
showMessageBeforeLogin(Resources.getString("title.error"),
Resources.getString("message.server.unavailable"), true);
} else if ("not-authorized(401)".equalsIgnoreCase(e.getMessage())) {
showMessageBeforeLogin(Resources.getString("title.error"),
Resources.getString("message.loging.failed"), true);
}
System.out.println("e.getMessage()" + e.getMessage());;
}
return;
}
}
}
if(isAuto) {
afterLoginSuccess();
} else{
loginFrame = new LoginFrame(this);
if(autoerrorMsg != null) {
if(currentUser == null) {
loginFrame.requestUser();
} else {
loginFrame.requestPassword(true);
}
showMessageBeforeLogin("\u767B\u9646", autoerrorMsg, true);
}
}
}
* 登录验证
* @param name - 登录账号
* @param password - 登录密码
*/
public void login(String name , String password){
String errorMsg = null;
if (!User.isAllowedName(name)) {
errorMsg = Resources.getString("message.username.error");
this.loginFrame.requestUser();
}else if (!User.isAllowedPassword(password.trim())) {
errorMsg = Resources.getString("message.password.error");
this.loginFrame.requestPassword(true);
}else if (!User.isPasswordLength(password)) {
errorMsg = User.PASSWORD_LENGTH_ERROR;
this.loginFrame.requestPassword(true);
}else {
//系统保存的密码
String savedPassword = loginConfig.getProperty(name + ClientConfig.PASSWORD_KEY);
boolean userInput = false;
//判断
if (savedPassword != null && password.equals(getPasswordTextWhenSaved(savedPassword))) {
userInput = true;
} else {
savedPassword = password;
userInput = true;
}
if(userInput){
try {
this.connection.login(name, savedPassword, "my_pc_client");
//修改验证方式
userRoster=connection.getRoster();
userRoster.setSubscriptionMode(Roster.SubscriptionMode.manual);
} catch (Exception e) {
if ("Not connected to server.".equalsIgnoreCase(e.getMessage())) {
showMessageBeforeLogin(Resources.getString("title.error"),
Resources.getString("message.server.unavailable"), true);
} else if ("not-authorized(401)".equalsIgnoreCase(e.getMessage())) {
showMessageBeforeLogin(Resources.getString("title.error"),
Resources.getString("message.loging.failed"), true);
}
return;
}
}
}
if(errorMsg != null) {
currentUser = null;
showMessageBeforeLogin(Resources.getString("title.error"), errorMsg, true);
} else {
loadingFrame = new LoadingFrame(loginFrame, StartRunning.this);
//currentUser.setAutoLogin(loginFrame.isAutoLogin());
//currentUser.setSavePassword(loginFrame.isSavePassword());
loginHistory.remove(name);
loginHistory.add(0, name);
loginConfig.remove(name + ClientConfig.AUTO_LOGIN_KEY);
loginConfig.remove(name + ClientConfig.PASSWORD_KEY);
if(loginHistory.size() > ClientConfig.MAX_HISTORY_USER_COUNT) {
loginHistory = loginHistory.subList(0, ClientConfig.MAX_HISTORY_USER_COUNT);
}
loginConfig.setPropertie(ClientConfig.LOGIN_HISTORY, getHistoryUserString());
loginConfig.saveConfig();
//加载本地个人数据数据库
LocalDataConnection.getInstance(name);
afterLoginSuccess();
}
//为了测试所把上面一行加到此处
//afterLoginSuccess();
}
/**
* 登录成功则初始化相关的数据
*/
private void afterLoginSuccess(){
//当前窗口对象不为空时
if (loginFrame != null) {
//关闭当前登录界面
loginFrame.dispose();
//loginFrame = null;
}
//加载所有皮肤
loadAllSkin();
//
if (loadingFrame != null) {
//关闭当前登录界面
loadingFrame.dispose();
}
mainFrame = new MainFrame(this);
changeSkin(this.getSkin(config.getProperty(ClientConfig.SKIN_NAME, ClientConfig.DEFAULT_SKIN_NAME)), true); if (this.vcard != null) {
//this.mainFrame.setUserVCard(vcard);
}
//发送在线请求
Presence presence = new Presence(Presence.Type.available,"",1,Presence.Mode.available);
getConnection().sendPacket(presence); vcard = new VCard();
try {
vcard.load(connection, "1236@sh-711701-00039");
//this.mainFrame.setUserVCard(vcard);
} catch (XMPPException e) {
e.printStackTrace();
}
//changeSkin(getSkin(config.getProperty(ClientConfig.SKIN_NAME, ClientConfig.DEFAULT_SKIN_NAME)), true);
//回收垃圾
startGC();
}
/**
* 关闭闪屏
*/
private void closeSplash(){
SplashScreen splash = SplashScreen.getSplashScreen();
if(splash != null){
splash.close();
}
}
/**
* 退出系统
*/
public void exit(){
if(gcTimer != null){
gcTimer.stop();
}
if(mainFrame != null){
config.setPropertie(ClientConfig.TITLE_OPAQUE, String.valueOf(mainFrame.isTitleOpaque()));
config.setPropertie(ClientConfig.SKIN_ALPHA, String.valueOf(mainFrame.getImageAlpha()));
config.setPropertie(ClientConfig.SKIN_MODE, String.valueOf(mainFrame.getImageDisplayMode()));
config.setPropertie(ClientConfig.SKIN_NAME,
currentSkin == null? ClientConfig.DEFAULT_SKIN_NAME : currentSkin.getName());
//config.setPropertie(ClientConfig.TABS_FOREGROUND, mainFrame.getTabForegroundDes());
//config.setPropertie(ClientConfig.STATUS_FOREGROUND, mainFrame.getStatusForegroundDes());
boolean maximized = (mainFrame.getExtendedState() & JAFrame.MAXIMIZED_BOTH) != 0;
config.setPropertie(ClientConfig.WINDOW_MAXIMIZED, String.valueOf(maximized));
if(UIUtil.isTranslucencySupported()) {
config.setPropertie(ClientConfig.WINDOW_ALPHA, String.valueOf(AWTUtilities.getWindowOpacity(mainFrame)));
}
if(!maximized) {
config.setPropertie(ClientConfig.WINDOW_SIZE, ClientUtil.sizeToString(mainFrame.getSize()));
}
}
config.saveConfig();
System.exit(0);
}
public Roster getUserRoster() {
return this.userRoster;
}
public ImageIcon getSysIcon() {
return this.sysIcon;
}
/**
* 返回的IM目录为当前用户(user.home)。
* user.home是所有用户特定的文件被放置在一个多用户系统中运行IM。
*
* @return
*/
public static String getIMUserHome() {
return USER_IM_HOME;
}
/**
* 初始化相关目录,如果不存在创建相关的目录
* @param directoryHome - IM目录
* @param directoryName - 目录名称
* @return 返回相关的File对象
*/
private static synchronized File initializeDirectory(File directoryHome, String directoryName){
File targetDir = new File(directoryHome, directoryName).getAbsoluteFile();
if(!targetDir.exists()){
targetDir.mkdirs();
}
return targetDir;
}
/**
* 初始化相关目录,如果不存在创建相关的目录
*
* @param directoryName - 目录名称
* @return 返回相关的File对象
*/
private static synchronized File initializeDirectory(String directoryName){
return initializeDirectory(new File(USER_IM_HOME), directoryName);
}
/**
* 返回IM安装的Bin目录 , bin目录包含着启动IM的所需脚本
* @return
*/
public static File getBinDirectory() {
if (BIN_DIRECTORY == null ) {
BIN_DIRECTORY = initializeDirectory("bin");
}
return BIN_DIRECTORY;
}
/**
* 返回IM安装的资源目录。
* 资源目录包含了所有本地库运行所需的操作系统特定的操作,如托盘支持。
* 您可以将其他本地在这个目录库,如果你想拥有它们放置到system.library.path。
* @return
*/
public static File getResourceDirectory() {
if (RESOURCE_DIRECTORY == null ) {
RESOURCE_DIRECTORY = initializeDirectory("resources");
}
return RESOURCE_DIRECTORY;
}
/**
* 返回日志目录中。日志目录包含所有IM的调试和错误文件。
*
* @return 日志目录
*/
public static File getLogDirectory() {
if (LOG_DIRECTORY == null ) {
LOG_DIRECTORY = initializeDirectory("logs");
}
return LOG_DIRECTORY;
}
/**
* 返回皮肤目录。皮肤目录包含所有IM的皮肤。
*
* @return 皮肤目录
*/
public static File getSkinDirectory() {
if (SKIN_DIRECTORY == null ){
SKIN_DIRECTORY = initializeDirectory("skin");
}
return SKIN_DIRECTORY;
}
/**
* 返回配置目录。配置目录包含所有IM的相关配置文件。
*
* @return 配置目录
*/
public static File getConfigDirectory() {
if (CONFIG_DIRECTORY == null ) {
CONFIG_DIRECTORY = initializeDirectory("config");
}
return CONFIG_DIRECTORY;
}
/**
* Banner文件过滤流
* @author 东泽 2012-06-19
*
*/
private class BannerFilter implements FilenameFilter{
public boolean accept(File dir, String name){
return name.toLowerCase().endsWith(ClientConfig.DOT_PNG);
}
}
/**
* @param args
*/
public static void main(String[] args) {
System.setProperty("sun.java2d.noddraw", "true");
ToolTipManager.sharedInstance().setInitialDelay(200);
UIUtil.setPopupMenuConsumeEventOnClose(false);
if(Util.isWindows()){
UIUtil.initToolTipForSystemStyle();
}
UIUtil.hideInputRect();
EventQueue.invokeLater(new Runnable(){
public void run(){
//SplashProcess.start();
new StartRunning();
}
});
}}
这个东西只能说一种爱好与兴趣吧!或是用来研究java里面一些如一些MVC模型、适配器模式等等还是不错的。
这个东西只能说一种爱好与兴趣吧!或是用来研究java里面一些如一些MVC模型、适配器模式等等还是不错的。
qq这个还是很不错的 能学到很多东西 发个截图看看
这个东西只能说一种爱好与兴趣吧!或是用来研究java里面一些如一些MVC模型、适配器模式等等还是不错的。
qq这个还是很不错的 能学到很多东西 发个截图看看
请点击下面文字人人都说Swing丑,唯我独爱它—Swing高仿QQ
楼主对Swing的应用也就是拼凑了一下组件而已。
Swing界面开发的精髓是LAF,想成为真正的Swing高手,还是写个完整的LAF更有效果。
老是用自己认为的方式模拟QQ界面,只是使用了Swing的皮毛而已。
就像JAVA诞生初期,很多人骂JAVA效率低一样。那都是程序员老是用自认为的方式使用JAVA的缘故。
真正用Java搞界面还是老外的例子更COOL!