/** * 登陆过程中的动画界面 */ 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: 一个想要做上海贼王的男人 发表于:2017-08-30 23:21:36 顶(0) | 踩(0) 回复
初级程序员
by: Jwoaioskdk 发表于:2017-07-22 13:43:18 顶(0) | 踩(0) 回复
??
回复评论