/** |
* 登陆过程中的动画界面 |
*/ |
package cn.qq.view.login; |
import java.awt.AWTException; |
import java.awt.Color; |
import java.awt.Font; |
import java.awt.Graphics; |
import java.awt.SystemTray; |
import java.awt.TrayIcon; |
import java.awt.event.ActionEvent; |
import java.awt.event.ActionListener; |
import java.awt.geom.RoundRectangle2D; |
import java.io.IOException; |
import javax.swing.ImageIcon; |
import javax.swing.JButton; |
import javax.swing.JFrame; |
import javax.swing.JLabel; |
import javax.swing.JPanel; |
import com.sun.awt.AWTUtilities; |
import cn.qq.listener.FrameMoveListener; |
import cn.qq.listener.WindowCloseListener; |
import cn.qq.listener.WindowMinListener; |
import cn.qq.manager.ServiceInterface; |
import cn.qq.service.LoginRequest; |
import cn.qq.thread.LoginTrayIconThread; |
import cn.qq.view.util.JButtonUtil; |
/** |
* |
* @author _zc |
* |
*/ |
public class LoadingFrame extends JFrame implements Runnable { |
private JPanel mainPane = null ; // 主面板 |
private JPanel downPane = null ; // 底部取消按钮面板 |
private JLabel lblCancel = null ; // 取消文字标签 |
private JButton btnCancelLogin = null ; // 取消登陆按钮 |
private JButton btnMin = null ; // 最小化 |
private JButton btnClose = null ; // 关闭 |
private JButton btnSet = null ; // 设置 |
private JLabel lblAccountInfo = null ; // 提示账号 |
public SystemTray sysTray = null ; // 系统托盘 |
public TrayIcon trayIcon = null ; // 托盘图标 |
public LoginFrame loginFrame = null ; // 登录界面 |
boolean isRun = true ; // 控制线程 |
public LoadingFrame(LoginFrame loginFrame) { |
this .loginFrame = loginFrame; |
} |
public void launchFrame() { |
this .setSize( 380 , 292 ); |
this .setIconImage( new ImageIcon( "image/Login/qqTitle.png" ).getImage()); |
this .setUndecorated( true ); |
AWTUtilities.setWindowOpacity( this , 0 .98f); |
this .initComponent(); |
this .addComponent(); |
this .initSystemTray(); |
this .setContentPane(mainPane); |
/** 设置圆角 */ |
AWTUtilities.setWindowShape( this , new RoundRectangle2D.Double( |
0 .0D, 0 .0D, this .getWidth(), this .getHeight(), 20 .0D, 20 .0D)); |
|
|
// 添加窗口移动监听 |
FrameMoveListener listener = new FrameMoveListener( this ); |
this .addMouseListener(listener); |
this .addMouseMotionListener(listener); |
this .setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
this .setVisible( true ); |
|
try { |
Thread.sleep( 4000 ); |
} catch (InterruptedException e1) { |
e1.printStackTrace(); |
} |
|
//多账号登录登录请求 |
if (AddLoginAccountFrame.account!= null && !AddLoginAccountFrame.account.equals( "" )){ |
LoginRequest service = null ; |
try { |
service = new LoginRequest(AddLoginAccountFrame.account, AddLoginAccountFrame.password, this ); |
} catch (IOException e) { |
this .showTip(); |
// e.printStackTrace(); |
} |
service.sendServiceRequest(); |
service.updateInfo(); |
} |
|
//向服务器发送登陆请求 |
ServiceInterface request = null ; |
try { |
request = new LoginRequest( this ); |
} catch (IOException e) { |
this .showTip(); |
// e.printStackTrace(); |
} |
if (request != null ){ |
request.sendServiceRequest(); |
request.updateInfo(); |
} |
} |
|
/** |
* 显示提示消息 |
*/ |
public void showTip() { |
this .setVisible( false ); |
this .dispose(); |
this .sysTray.remove( this .trayIcon); |
this .loginFrame.setVisible( true ); |
try { |
this .loginFrame.sysTray.add(loginFrame.trayIcon); |
} catch (AWTException e1) { |
// TODO Auto-generated catch block |
// e1.printStackTrace(); |
} |
this .loginFrame.setLocation( this .getX(), this .getY()); |
this .loginFrame.mainPane.remove( this .loginFrame.downPane); |
this .loginFrame.mainPane.add( this .loginFrame.errorTipPane); |
this .loginFrame.errorTipPane.setBounds( 0 , 241 , 380 , 51 ); |
this .loginFrame.errorTipPane.lblTip.setText( "网络连接故障,服务器正在维护。" ); |
this .loginFrame.errorTipPane.lblTip.setBounds( 100 , 15 , 300 , 20 ); |
this .loginFrame.mainPane.updateUI(); |
} |
|
/** |
* 设置系统托盘 |
*/ |
private void initSystemTray() { |
sysTray = SystemTray.getSystemTray(); |
trayIcon = new TrayIcon( new ImageIcon( "image/Loading/login_tray/6.png" ).getImage(), "QQ登录" ); |
LoginTrayIconThread trayIconThread = new LoginTrayIconThread(trayIcon); |
new Thread(trayIconThread).start(); |
try { |
if (SystemTray.isSupported() && trayIcon != null ) { |
sysTray.add(trayIcon); |
} |
} catch (AWTException e1) { |
e1.printStackTrace(); |
} |
} |
/** |
* 初始化组件 |
*/ |
private void initComponent() { |
// 主面板 |
mainPane = new MainPane(); |
// mainPane.setBorder(new LineBorder(Color.GRAY)); |
downPane = new DownPane(); |
lblAccountInfo = new JLabel(loginFrame.getJtfAccount().getText() + "正在登录..." ); |
lblAccountInfo.setFont( new Font( "微软雅黑" , Font.PLAIN, 12 )); |
lblAccountInfo.setForeground(Color.black); |
|
btnClose = JButtonUtil.getBtnClose(); |
btnMin = JButtonUtil.getBtnMin(); |
btnSet = JButtonUtil.getBtnSet(); |
btnSet.setEnabled( false ); |
// 给取消按钮添加活动事件 |
btnCancelLogin.addActionListener( new ActionListener() { |
@Override |
public void actionPerformed(ActionEvent e) { |
setVisible( false ); |
isRun = false ; |
dispose(); |
sysTray.remove(trayIcon); |
loginFrame.setVisible( true ); |
try { |
loginFrame.sysTray.add(loginFrame.trayIcon); |
} catch (AWTException e1) { |
e1.printStackTrace(); |
} |
loginFrame.setLocation(LoadingFrame. this .getX(), |
LoadingFrame. this .getY()); |
} |
}); |
// 给最小化按钮添加活动事件 |
btnMin.addActionListener( new WindowMinListener( this )); |
//给关闭按钮添加监听 |
btnClose.setActionCommand( "exit" ); |
btnClose.addActionListener( new WindowCloseListener( this )); |
} |
/** |
* 添加组件 |
*/ |
private void addComponent() { |
mainPane.setLayout( null ); |
mainPane.add(btnClose); |
btnClose.setBounds( 342 , - 2 , 39 , 20 ); |
mainPane.add(btnMin); |
btnMin.setBounds( 315 , - 2 , 28 , 20 ); |
mainPane.add(btnSet); |
btnSet.setBounds( 288 , - 2 , 28 , 20 ); |
|
mainPane.add(lblAccountInfo); |
lblAccountInfo.setBounds( 140 , 115 , 180 , 60 ); |
mainPane.add(downPane); |
downPane.setBounds( 0 , 241 , 380 , 51 ); |
} |
/** |
* 底部按钮面板 |
*/ |
class DownPane extends JPanel { |
public DownPane() { |
btnCancelLogin = JButtonUtil.getIconButton( |
"image/Login/button_red_normal.png" , |
"image/Login/button_red_press.png" , |
"image/Login/button_red_hover.png" ); |
lblCancel = new JLabel( "取 消" ); |
lblCancel.setFont( new Font( "微软雅黑" , Font.PLAIN, 12 )); |
lblCancel.setForeground(Color.BLACK); |
this .setLayout( null ); |
this .add(lblCancel); |
lblCancel.setBounds( 163 , 16 , 100 , 25 ); |
this .add(btnCancelLogin); |
btnCancelLogin.setBounds( 72 , 5 , 237 , 48 ); |
} |
@Override |
protected void paintComponent(Graphics g) { |
super .paintComponent(g); |
g.drawImage( new ImageIcon( "image/Login/loginbutton_background.jpg" ) |
.getImage(), 0 , 0 , 378 , 50 , this ); |
g.drawImage( new ImageIcon( "image/Loading/loading.gif" ).getImage(), |
0 , 1 , 380 , 2 , this ); |
} |
} |
/** |
* 主面板 |
* |
* @author _zc |
*/ |
class MainPane extends JPanel implements Runnable { |
int time = 1 ; |
public MainPane() { |
new Thread( this ).start(); |
} |
public void paintComponent(Graphics g) { |
super .paintComponent(g); |
g.drawImage( new ImageIcon( "image/Login/background/afternoon.jpg" ) |
.getImage(), 0 , 0 , 380 , 292 , this ); |
|
// if (time <= 10) { |
// g.drawImage( |
// new ImageIcon("image/Loading/white/1.png").getImage(), |
// 168, 165, 28, 28, this); |
// } else if (time <= 20) { |
// g.drawImage( |
// new ImageIcon("image/Loading/white/2.png").getImage(), |
// 168, 165, 28, 28, this); |
// } else if (time <= 30) { |
// g.drawImage( |
// new ImageIcon("image/Loading/white/3.png").getImage(), |
// 168, 165, 28, 28, this); |
// } else if (time <= 40) { |
// g.drawImage( |
// new ImageIcon("image/Loading/white/4.png").getImage(), |
// 168, 165, 28, 28, this); |
// } else if (time <= 50) { |
// g.drawImage( |
// new ImageIcon("image/Loading/white/5.png").getImage(), |
// 168, 165, 28, 28, this); |
// } else if (time <= 60) { |
// g.drawImage( |
// new ImageIcon("image/Loading/white/6.png").getImage(), |
// 168, 165, 28, 28, this); |
// } else if (time <= 70) { |
// g.drawImage( |
// new ImageIcon("image/Loading/white/7.png").getImage(), |
// 168, 165, 28, 28, this); |
// } else if (time <= 80) { |
// g.drawImage( |
// new ImageIcon("image/Loading/white/8.png").getImage(), |
// 168, 165, 28, 28, this); |
// } |
// time++; |
// if (time >= 80) { |
// time = 1; |
// } |
|
if (time <= 10 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000001.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 20 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000002.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 30 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000003.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 40 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000004.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 50 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000005.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 60 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000006.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 70 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000007.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 80 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000008.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 90 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000009.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 100 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000010.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 110 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000011.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 120 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000010.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 130 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000009.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 140 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000008.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 150 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000007.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 160 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000006.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 170 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000005.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 180 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000004.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 190 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000003.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} else if (time <= 210 ) { |
g.drawImage( |
new ImageIcon( "image/Loading/snow_loading/frame-000002.png" ).getImage(), |
60 , 80 , 286 , 50 , this ); |
} |
|
time++; |
if (time >= 210 ) { |
time = 1 ; |
} |
} |
@Override |
public void run() { |
while ( true ) { |
this .repaint(); |
try { |
Thread.sleep( 10 ); |
} catch (InterruptedException e) { |
e.printStackTrace(); |
} |
} |
} |
} |
@Override |
public void run() { |
this .launchFrame(); |
} |
|
} |
初级程序员
by: Jwoaioskdk 发表于:2017-07-22 13:43:18 顶(0) | 踩(0) 回复
??
回复评论