用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

qq2013

2013-08-09 作者: 阿小举报

[java]代码库

package cn.qq.view.login;
 
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.RoundRectangle2D;
import java.io.IOException;
 
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.border.LineBorder;
 
import com.sun.awt.AWTUtilities;
 
import cn.qq.listener.FrameMoveListener;
import cn.qq.listener.WindowCloseListener;
import cn.qq.listener.WindowMinListener;
import cn.qq.view.register.GetbackPswFrame;
import cn.qq.view.register.RegisterFrame;
import cn.qq.view.util.JButtonUtil;
import cn.qq.view.util.JFrameUtil;
 
/**
 * 登录界面
 *
 * @author ViKi_zc
 *
 */
 
public class LoginFrame extends JFrame {
     
    public JPanel mainPane = null; // 主面板
    public JPanel downPane = null; // 最下面的登录面板
    private JLabel lblLogin = null; // 登录文字标签
    private JButton btnLogin = null;// 登录按钮
     
    public ErrorTipPane errorTipPane = null;//登录失败错误提示面板
     
     
    private JButton btnMin = null; // 最小化按钮
    private JButton btnClose = null; // 关闭按钮
    private JButton btnSet = null; // 设置按钮
 
    private JButton btnOsk = null; // 软键盘
    private JButton btnQuickLogin = null; // 闪登按钮
    private JButton btnMoreAccountLogin = null; // 添加登录账户按钮
 
    private JLabel lblLoginHeadbkg = null; // 登录头像背景
    private JLabel lblLoginHeadimg = null; // 登录头像
 
    private JTextField jtfAccount = null; // 账户输入框
    private JPasswordField pwdfPassword = null;// 密码输入框
    private JButton btnRegister = null; // 注册按钮
    private JButton btnFindBackPwd = null;// 找回密码按钮
    private JCheckBox chkAutoLogin = null;// 自动登录复选框
    private JCheckBox chkRememberPwd = null;// 记住密码复选框
    private JLabel lblRememberPwd = null;// 记住密码标签
    private JLabel lblAutoLogin = null;// 自动登录标签
 
    private JMenuBar mBar = new JMenuBar(); // 登录状态菜单条
    private JMenu menuStatus = new JMenu();// 登录状态菜单
    private JMenuItem imonline = new JMenuItem();
    private JMenuItem invisible = new JMenuItem();
    private JMenuItem busy = new JMenuItem();
    private JMenuItem away = new JMenuItem();
    private JMenuItem qme = new JMenuItem();
    private JMenuItem mute = new JMenuItem();
 
    PopupMenu pupup = null;
    public SystemTray sysTray = null; // 系统托盘
    public TrayIcon trayIcon = null; // 托盘图标
    Font font = new Font("微软雅黑", Font.PLAIN, 12);
 
    public void launchFrame() {
        this.setSize(380, 292);
        this.setLocation(JFrameUtil.getScreenCenterPoint(this));
        this.setIconImage(new ImageIcon("image/Login/qqTitle.png").getImage());
        this.setUndecorated(true);
 
        this.initComponent();
        this.addComponent();
        this.initSystemTray();
        this.setContentPane(mainPane);
        AWTUtilities.setWindowOpacity(this, 0.90f);
         /** 设置圆角 */ 
        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);
    }
 
    /**
     * 设置系统托盘
     */
    private void initSystemTray() {
        sysTray = SystemTray.getSystemTray();
        trayIcon = new TrayIcon(new ImageIcon(
                "image/Login/status/offline16.png").getImage(), "QQ", pupup);
        try {
            if (SystemTray.isSupported() && sysTray != null) {
                sysTray.add(trayIcon);
            }
        } catch (AWTException e1) {
            e1.printStackTrace();
        }
        trayIcon.addActionListener(new ActionListener() {
             
            @Override
            public void actionPerformed(ActionEvent e) {
                LoginFrame.this.setExtendedState(JFrame.NORMAL);
                setVisible(true);
            }
        });
    }
 
    /**
     * 初始化组件
     */
    private void initComponent() {
        //提示面板
        errorTipPane = new ErrorTipPane();
        // 主面板
        mainPane = new MainPane();
        // 底部登录按钮面板
        downPane = new DownPane();
         
        // 登陆头像及背景
        lblLoginHeadimg = new JLabel(new ImageIcon("image/Login/qqhead.png"));
        lblLoginHeadbkg = new JLabel(new ImageIcon(
                "image/Login/login_head_white.png"));
        // 用户名文本框
        jtfAccount = new JTextField("100000");
        jtfAccount.setBorder(new LineBorder(Color.GRAY, 1));
        jtfAccount.setFont(new Font("Verdana", Font.PLAIN, 12));
        jtfAccount.setForeground(Color.black);
 
        // 密码输入框
        pwdfPassword = new JPasswordField("1234567890  ");
//      pwdfPassword = new JPasswordField("123");
        pwdfPassword.requestFocus(true);
        pwdfPassword.setBorder(new LineBorder(Color.GRAY, 1));
        pwdfPassword.setFont(font);
        pwdfPassword.setForeground(Color.black);
        pwdfPassword.setEchoChar('●');
 
        // 自动登陆复选框
        chkAutoLogin = JButtonUtil.getIconCheckBox(
                "image/Login/checkbox_normal.png",
                "image/Login/checkbox_hover.png",
                "image/Login/checkbox_press.png",
                "image/Login/checkbox_selected_hover.png");
        // 记住密码复选框
        chkRememberPwd = JButtonUtil.getIconCheckBox(
                "image/Login/checkbox_normal.png",
                "image/Login/checkbox_hover.png",
                "image/Login/checkbox_press.png",
                "image/Login/checkbox_selected_hover.png");
        // 自动登陆标签
        lblAutoLogin = new JLabel("自动登录");
        lblAutoLogin.setFont(font);
        lblAutoLogin.setForeground(Color.black);
        // 记住密码标签
        lblRememberPwd = new JLabel("记住密码");
        lblRememberPwd.setFont(font);
        lblRememberPwd.setForeground(Color.black);
 
        this.initStatus();
        this.initButton();
        this.initPupupMenu();
         
        jtfAccount.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if(e.getClickCount()==1||e.getClickCount()==2){
                    mainPane.remove(errorTipPane);
                    mainPane.add(downPane);
                    downPane.setBounds(0, 241, 380, 51);
                    mainPane.updateUI();
                    mainPane.validate();
                }
            }
        });
         
        pwdfPassword.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if(e.getClickCount()==1||e.getClickCount()==2){
                    mainPane.remove(errorTipPane);
                    mainPane.add(downPane);
                    downPane.setBounds(0, 241, 380, 51);
                    mainPane.updateUI();
                    mainPane.validate();
                }
            }
        });
    }
 
    /**
     * 初始化右键菜单
     */
    private void initPupupMenu() {
        pupup = new PopupMenu();
        MenuItem itemShowMainFrame = new MenuItem("打开主面板");
        itemShowMainFrame.setFont(font);
        MenuItem itemExit = new MenuItem("退出");
        itemExit.setActionCommand("exit");
        itemExit.setFont(font);
        pupup.add(itemShowMainFrame);
        pupup.addSeparator();
        pupup.add(itemExit);
 
        itemExit.addActionListener(new WindowCloseListener(this));
        itemShowMainFrame.addActionListener(new ActionListener() {
             
            @Override
            public void actionPerformed(ActionEvent e) {
                LoginFrame.this.setExtendedState(JFrame.NORMAL);
                setVisible(true);
            }
        });
    }
 
    /**
     * 初始化状态菜单
     */
    private void initStatus() {
        menuStatus.setIcon(new ImageIcon("image/Login/status/imonline.png"));
        menuStatus.setBorder(null);
        menuStatus.setFocusPainted(false);
        menuStatus.setContentAreaFilled(false);
        menuStatus.setName("imonline");
        mBar.setBorder(null);
        menuStatus.setBorder(null);
 
        imonline.setIcon(new ImageIcon("image/Login/status/imonline.png"));
        invisible.setIcon(new ImageIcon("image/Login/status/invisible.png"));
        busy.setIcon(new ImageIcon("image/Login/status/busy.png"));
        away.setIcon(new ImageIcon("image/Login/status/away.png"));
        qme.setIcon(new ImageIcon("image/Login/status/Qme.png"));
        mute.setIcon(new ImageIcon("image/Login/status/mute.png"));
 
        imonline.setText("我在线上");
        imonline.setFont(font);
        qme.setText("Q我吧");
        qme.setFont(font);
        away.setText("离开");
        away.setFont(font);
        busy.setText("忙碌");
        busy.setFont(font);
        mute.setText("请勿打扰");
        mute.setFont(font);
        invisible.setText("隐身");
        invisible.setFont(font);
 
        menuStatus.add(imonline);
        menuStatus.addSeparator();
        menuStatus.add(qme);
        menuStatus.add(away);
        menuStatus.add(busy);
        menuStatus.add(mute);
        menuStatus.addSeparator();
        menuStatus.add(invisible);
        mBar.add(menuStatus);
        mBar.setOpaque(false);// 如果为true,则该组件绘制其边界内的所有像素
        menuStatus.setOpaque(false);
 
        imonline.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                menuStatus.setIcon(imonline.getIcon());
                menuStatus.setName("imonline");
            }
        });
        invisible.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                menuStatus.setIcon(invisible.getIcon());
                menuStatus.setName("invisible");
            }
        });
        busy.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                menuStatus.setIcon(busy.getIcon());
                menuStatus.setName("busy");
            }
        });
        away.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                menuStatus.setIcon(away.getIcon());
                menuStatus.setName("away");
            }
        });
        qme.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                menuStatus.setIcon(qme.getIcon());
                menuStatus.setName("qme");
            }
        });
        mute.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                menuStatus.setIcon(mute.getIcon());
                menuStatus.setName("mute");
            }
        });
 
    }
 
    /**
     * 初始化主面板上的按钮
     */
    private void initButton() {
        // 软键盘按钮
        btnOsk = JButtonUtil.getIconButton("image/Login/keyboard.png");
 
        // 注册按钮
        btnRegister = JButtonUtil.getIconButton("image/Login/zhuce_normal.png",
                "image/Login/zhuce_press.png", "image/Login/zhuce_hover.png");
        // 密码找回按钮
        btnFindBackPwd = JButtonUtil.getIconButton(
                "image/Login/mima_normal.png", "image/Login/mima_press.png",
                "image/Login/mima_hover.png");
        btnClose = JButtonUtil.getBtnClose();
        btnClose.setActionCommand("exit");
        btnMin = JButtonUtil.getBtnMin();
        btnSet = JButtonUtil.getBtnSet();
 
        // 给登录按钮添加活动事件
        btnLogin.addActionListener(new ActionListener() {
 
            @Override
            public void actionPerformed(ActionEvent e) {
                setVisible(false);
                sysTray.remove(trayIcon);
                LoadingFrame loadingFrame = new LoadingFrame(LoginFrame.this);
                loadingFrame.setLocation(LoginFrame.this.getX(),
                        LoginFrame.this.getY());
                new Thread(loadingFrame).start();
            }
        });
 
        // 给关闭按钮添加活动事件
        btnClose.addActionListener(new WindowCloseListener(this));
 
        // 给最小化按钮添加活动事件
        btnMin.addActionListener(new WindowMinListener(this));
 
        // 给设置按钮添加活动事件
        btnSet.addActionListener(new ActionListener() {
 
            @Override
            public void actionPerformed(ActionEvent e) {
                setVisible(false);
                LoginSetFrame loginSetFrame = new LoginSetFrame(LoginFrame.this);
                loginSetFrame.setLocation(LoginFrame.this.getX(),
                        LoginFrame.this.getY());
                loginSetFrame.launchFrame();
            }
        });
 
        // 给软键盘按钮添加活动事件
        btnOsk.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Runtime rt = Runtime.getRuntime();
                try {
                    rt.exec("osk");
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        });
 
        // 给右下角闪登按钮添加活动事件
        btnQuickLogin.addActionListener(new ActionListener() {
 
            @Override
            public void actionPerformed(ActionEvent e) {
                setVisible(false);
                QuickLoginFrame quickLoginFrame = new QuickLoginFrame(
                        LoginFrame.this);
                quickLoginFrame.setLocation(LoginFrame.this.getX(),
                        LoginFrame.this.getY());
                quickLoginFrame.launchFrame();
            }
        });
 
        // 给左下角多帐户登录按钮添加活动事件
        btnMoreAccountLogin.addActionListener(new ActionListener() {
 
            @Override
            public void actionPerformed(ActionEvent e) {
                setVisible(false);
                AddLoginAccountFrame addLoginAccountFrame = new AddLoginAccountFrame(
                        LoginFrame.this);
                addLoginAccountFrame.setLocation(LoginFrame.this.getX(),
                        LoginFrame.this.getY());
                addLoginAccountFrame.launchFrame();
            }
        });
        // 给注册按钮添加活动事件
        btnRegister.addActionListener(new ActionListener() {
 
            @Override
            public void actionPerformed(ActionEvent e) {
                new RegisterFrame();
            }
        });
        // 给找回密码按钮添加活动事件
        btnFindBackPwd.addActionListener(new ActionListener() {
 
            @Override
            public void actionPerformed(ActionEvent e) {
                new GetbackPswFrame();
            }
        });
    }
 
    /**
     * 添加组件
     */
    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(btnOsk);
        btnOsk.setBounds(275, 180, 20, 20);
 
        mainPane.add(mBar);
        mBar.setBounds(85, 205, 32, 22);
        mainPane.add(lblLoginHeadimg);
        lblLoginHeadimg.setBounds(22, 147, 80, 79);
        mainPane.add(lblLoginHeadbkg);
        lblLoginHeadbkg.setBounds(21, 143, 84, 84);
 
        mainPane.add(jtfAccount);
        jtfAccount.setBounds(113, 145, 185, 26);
 
        mainPane.add(pwdfPassword);
        pwdfPassword.setBounds(113, 178, 185, 26);
        mainPane.add(btnRegister);
        btnRegister.setBounds(310, 150, 51, 16);
        mainPane.add(btnFindBackPwd);
        btnFindBackPwd.setBounds(310, 183, 51, 16);
 
        mainPane.add(chkAutoLogin);
        chkRememberPwd.setBounds(113, 211, 15, 15);
        mainPane.add(lblRememberPwd);
        lblRememberPwd.setBounds(129, 211, 48, 15);
        mainPane.add(chkRememberPwd);
        chkAutoLogin.setBounds(189, 211, 15, 15);
        mainPane.add(lblAutoLogin);
        lblAutoLogin.setBounds(206, 211, 48, 15);
 
        mainPane.add(downPane);
        downPane.setBounds(0, 241, 380, 51);
 
    }
 
    /**
     * 底部按钮面板
     */
    class DownPane extends JPanel {
 
        public DownPane() {
            this.initComponent();
            this.setLayout(null);
            this.add(btnMoreAccountLogin);
            btnMoreAccountLogin.setBounds(0, 11, 40, 40);
            this.add(btnQuickLogin);
            btnQuickLogin.setBounds(340, 11, 40, 40);
            this.add(lblLogin);
            lblLogin.setBounds(163, 16, 100, 25);
            this.add(btnLogin);
            btnLogin.setBounds(72, 5, 237, 48);
        }
 
        // 初始化底部面板组件
        private void initComponent() {
            // 登录按钮上的标签
            lblLogin = new JLabel("登        录");
            lblLogin.setFont(font);
            lblLogin.setForeground(Color.BLACK);
            // 登录按钮
            btnLogin = JButtonUtil.getIconButton(
                    "image/Login/button_blue_normal.png",
                    "image/Login/button_blue_press.png",
                    "image/Login/button_blue_hover.png");
            // 多帐户登录按钮
            btnMoreAccountLogin = JButtonUtil.getIconButton(
                    "image/Login/corner_back_normal.png",
                    "image/Login/corner_back_press.png",
                    "image/Login/corner_back_hover.png");
            btnMoreAccountLogin.setToolTipText("多帐号登录");
            // 闪登按钮
            btnQuickLogin = JButtonUtil.getIconButton(
                    "image/Login/corner_right_normal.png",
                    "image/Login/corner_right_press.png",
                    "image/Login/corner_right_hover.png");
            btnQuickLogin.setToolTipText("QQ闪登");
        }
 
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.drawImage(new ImageIcon("image/Login/loginbutton_background.jpg")
                    .getImage(), 0, 0, 378, 50, this);
 
        }
    }
 
    /**
     * 主面板类
     *
     * @author _zc
     */
    class MainPane extends JPanel {
 
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.drawImage(
                    new ImageIcon("image/Login/background/noon.jpg").getImage(),
                    0, 0, 380, 292, this);
        }
    }
     
    /**
     * 登录超时提示面板
     * @author ViKi_zc
     *
     */
    public class ErrorTipPane extends JPanel{
        public JLabel lblTip = null;
        private JButton btnClo = null;
        private JButton btnTip = null;
         
        public ErrorTipPane() {
            this.setSize(380, 51);
            init();
            this.setLayout(null);
            this.add(lblTip);
            lblTip.setBounds(80, 15, 300, 20);
            this.add(btnTip);
            btnTip.setBounds(45, 18, 16, 16);
            this.add(btnClo);
            btnClo.setBounds(358, 6, 12, 12);
        }
 
        private void init() {
            lblTip = new JLabel("对不起,此账号已登录,请不要重复登录。");
            lblTip.setFont(font);
            lblTip.setForeground(Color.BLACK);
             
            btnTip = JButtonUtil.getIconButton("image/Login/Tip/i.png");
            btnClo = JButtonUtil.getIconButton("image/Login/Tip/close.png",
                    "image/Login/Tip/close_press.png",
                    "image/Login/Tip/close_hover.png");
            btnClo.addActionListener(new ActionListener() {
                 
                @Override
                public void actionPerformed(ActionEvent e) {
                    mainPane.remove(errorTipPane);
                    mainPane.add(downPane);
                    downPane.setBounds(0, 241, 380, 51);
                    mainPane.updateUI();
                    mainPane.validate();
                }
            });
             
        }
    }
     
     
    /**
     * 启动登录界面
     *
     * @param args
     */
    public static void main(String[] args) {
        new LoginFrame().launchFrame();
    }
 
    public JTextField getJtfAccount() {
        return jtfAccount;
    }
 
    public JPasswordField getPwdfPassword() {
        return pwdfPassword;
    }
 
    public JMenu getMenuStatus() {
        return menuStatus;
    }
 
}

[代码运行效果截图]


qq2013

[源代码打包下载]




网友评论    (发表评论)

共98 条评论 1/4页  1  2   3   4  >

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...