Java之QQ界面实现

Java之QQ界面实现

##1.创建QQ登录窗口,并添加布局管理器
QQLogin.java

import java.awt.*;
import javax.swing.*;
public class QQLogin{
	//1.为QQ登录界面整体初始化一个JFrame窗口
           private static JFrame jf=new JFrame();
           public static void initLogin(){
        	   //QQ登录窗口初始化方法
           jf.setSize(426,300);//设置窗口尺寸
           jf.setLocation(497,242);//设置窗口在屏幕显示位置
           jf.setUndecorated(true);//设置JFrame窗口边框不显示
           jf.setResizable(false);//禁止改变窗口大小
           BorderLayout border_layout=new BorderLayout();
           jf.setLayout(border_layout);
           //创建并加入顶部面板
           JPanel panel_north=CreatePanel.CreateNorthPanel(jf);
          jf.add(panel_north,BorderLayout.PAGE_START);
          //创建并加入中部面板
          JPanel panel_center=CreatePanel.CrateCenterPanel(jf);
          jf.add(panel_center,BorderLayout.CENTER);
          //创建并加入左侧面板
          JPanel panel_west=CreatePanel.CreateWestPanel();
          jf.add(panel_west,BorderLayout.LINE_START);
        //创建并加入底部面板
          JPanel panel_south=CreatePanel.CreateSouthPanel();
          jf.add(panel_south,BorderLayout.PAGE_END);
        //创建并加入右侧面板
          JPanel panel_east=CreatePanel.CrateEastPanel();
          jf.add(panel_east,BorderLayout.LINE_END);
          jf.setVisible(true);//设置窗口可见
}
public static void main(String[]args){
           SwingUtilities.invokeLater(QQLogin::initLogin);
}
}

##2.创建区域面板类 划分容器区域
CreatePanel.java

import java.awt.*;
import javax.swing.*;
public class CreatePanel {
	private static LoginListener ll=null;
 //顶部面板区域
 public static JPanel CreateNorthPanel(JFrame jf){
	 //创建一个JPanel顶部面板
  JPanel panel=new JPanel();
  //取消面板内默认布局
  panel.setLayout(null);
  //设置顶部面板尺寸
  panel.setPreferredSize(new Dimension(0,140));
  //向顶部面板添加背景图片
  ImageIcon image=new ImageIcon("images/back.jpg");
  JLabel background=new JLabel(image);
//设置背景图片的位置和尺寸
  background.setBounds(0,0,426, image.getIconHeight());
  panel.add(background);
  //在顶部JPanel面板右上角添加一个退出按钮
  JButton out=new JButton(new ImageIcon("images/close_normal.jpg"));
  out.setBounds(403,0,26,26);
  //设置鼠标移动到退出按钮时更改图片
  out.setRolloverIcon(new ImageIcon("images/close_hover.jpg"));
  //取消按钮边框效果
  out.setBorderPainted(false);
  panel.add(out);
  //为退出按钮注册监听器,用来关闭窗口
  out.addActionListener(event->jf.dispose());
  return panel;
  }
   //左侧面板区域
 public static JPanel CreateWestPanel(){
	//创建一个JPanel左侧面板
  JPanel panel=new JPanel();
  panel.setLayout(null);
  panel.setPreferredSize(new Dimension(130,0));
  //向左侧面板添加背景图片
  ImageIcon image=new ImageIcon("images/qq.jpg");
  JLabel background=new JLabel(image);
  background.setBounds(0, 0, 120, 110);
  panel.add(background);
  return panel;
 }
  //中部面板区域
 public static JPanel CrateCenterPanel(JFrame jf){
	 //创建一个JPanel中部面板
  JPanel panel=new JPanel();
  panel.setLayout(null);
  //创建一个JcomboBox下拉框组件,并初始化QQ账号
  String str[]={"123456789","987654321","1314520888"};
  JComboBox<Object> jcoCenter=new JComboBox<Object>(str);
  panel.add(jcoCenter);
  //设置下拉框编辑
  jcoCenter.setEditable(true);
  jcoCenter.setBounds(0, 15, 175, 30);
  //设置下拉框内容字体
  jcoCenter.setFont(new Font("Calibrl",0,13));
  //创建一个JPsswordField密码框组件
  JPasswordField jpaCenter=new JPasswordField();
  //设置密码框面板为FlowLayout
  jpaCenter.setLayout(new FlowLayout(FlowLayout.RIGHT,0,0));
  jpaCenter.setBounds(0, 44, 175, 30);
  jpaCenter.setPreferredSize(new Dimension(185,25));
  panel.add(jpaCenter);
  //创建ImageIcon小键盘组件,并加入到密码框组件中
  ImageIcon image=new ImageIcon("images/keyboard.jpg");
  JButton jbu=new JButton(image);
  jbu.setPreferredSize(new Dimension(22,20));
  jbu.setBorderPainted(false);
  jpaCenter.add(jbu);
  //创建两个JChenckBox多选框组件
  JCheckBox jch1=new JCheckBox("记住密码");
  //设置选中时不显示边框
  jch1.setFocusPainted(false);
  jch1.setFont(new Font("宋体",0,13));
  jch1.setBounds(0, 85, 80, 20);
  panel.add(jch1);
  JCheckBox jch2=new JCheckBox("自动登录");
  jch2.setFocusPainted(false);
  jch2.setFont(new Font("宋体",0,13));
  jch2.setBounds(100, 85, 80, 20);
  panel.add(jch2);
  //在中部面板初始化登录监听器,封装账号和密码
  ll=new LoginListener(jcoCenter,jpaCenter,jf);
  return panel;
 }
//右侧面板区域
 public static JPanel CrateEastPanel(){
	 //创建一个Jpanel右侧面板
  JPanel panel=new JPanel();
  panel.setLayout(null);
  panel.setPreferredSize(new Dimension(100,0));
  //创建两个JLabel标签组件
  JLabel regeist=new JLabel("注册账号");
  regeist.setForeground(new Color(100,149,238));
  regeist.setBounds(0,13,60,30);
  regeist.setFont(new Font("宋体",0,12));
//创建一个Jpanel右侧面板
  JLabel regetpwd=new JLabel("找回密码");
  regetpwd.setForeground(new Color(100,149,238));
  regetpwd.setBounds(0,43,60,30);
  regetpwd.setFont(new Font("宋体",0,12));
  panel.add(regetpwd);
  panel.add(regeist);
  return panel;
 } 
 //底部面板区域
 public static JPanel CreateSouthPanel(){
	 //床一个JPanel底部面板
  JPanel panel=new JPanel();
  panel.setPreferredSize(new Dimension(0,51));
  panel.setLayout(null);
  //创建左下角多人登录图标组件
  JButton jble=new JButton(
                   new ImageIcon("images/single_normal.jpg"));
  jble.setPreferredSize(new Dimension(40,40));
  jble.setFocusPainted(false);
  jble.setRolloverIcon(new ImageIcon("images/single_down.jpg"));
  jble.setBorderPainted(false);
  //设置不显示按钮区域
  jble.setContentAreaFilled(false);
  jble.setBounds(0,10,40,40);
  jble.setToolTipText("多账号登录");
  //创建底部中间登录图标组件
  ImageIcon image=new ImageIcon("images/login_normal.jpg");
  JButton jb=new JButton("登     录",image);
  jb.setFont(new Font("宋体",0,13));
  jb.setBounds(130,0,175,40);
  //将文字放在图片中间
  jb.setHorizontalTextPosition(SwingConstants.CENTER);
  jb.setFocusPainted(false);
  jb.setContentAreaFilled(false);
  jb.setBorderPainted(false);
  jb.setRolloverIcon(new ImageIcon("images/lohin_hover.jpg"));
  //创建右下角二维码登录图标组件
  JButton jbri=new JButton(new ImageIcon("images/right_normal.jpg"));
  jbri.setBounds(380,10,40,40);
  jbri.setFocusPainted(false);
  jbri.setBorderPainted(false);
  jbri.setContentAreaFilled(false);
  jbri.setRolloverIcon(new ImageIcon("images/right_hover.jpg"));
  jbri.setToolTipText("二维码登录");
  //将底部3 个组件添加到底部JPanel面板中
  panel.add(jble);
  panel.add(jb);
  panel.add(jbri);
  //为登录按钮注册监听器,后台检测QQ账号,密码是否正确
  jb.addActionListener(ll);
  return panel; 
 }
 }

##3.创建并注册监听器
LoginListener.java

import java.awt.*;
	import java.awt.event.*;
	import javax.swing.*;
	public class LoginListener implements ActionListener{
	  private JComboBox<Object>jco;//用来获取QQ账号的对象
	  private JPasswordField jpa;//用来获取QQ密码的对象
	  private JFrame jf;
	  public LoginListener(JComboBox<Object>jco,JPasswordField jpa,JFrame jf) {
	   super();
	   this.jco=jco;
	   this.jpa=jpa;
	   this.jf=jf;
	  }
	  public void actionPerformed(ActionEvent e) {
	   // 1.获取登录的账号和密码
	   String name=(String)jco.getSelectedItem();
	   String pwd=new String(jpa.getPassword());
	   //2.判断输入的账号和密码是否正确
	   if(name.equals("123456789")&& pwd.equals("123")){
	     //账号正确,先关闭当前JFrame登录窗口
	    jf.dispose();
	    //模拟显示登录成功后的QQ窗口
	    JFrame jfn=new JFrame();
	    jfn.setSize(289,687);
	    jfn.setLocation(800,100);
	    jfn.setUndecorated(true);
	    jfn.setResizable(true);
	    jfn.setVisible(true);
	    //为QQ显示窗口添加背景图片和退出按钮组件
	    JPanel panel=new JPanel();
	    panel.setLayout(null);
	    panel.setPreferredSize(new Dimension(0,140));
	    ImageIcon image=new ImageIcon("images/qqSuccess.jpg");
	    JLabel background=new JLabel(image);
	    background.setBounds(0,0,289,687);
	    panel.add(background);
	     //添加退出按钮
	    JButton out=new JButton(new ImageIcon("images/close2_normal.jpg"));
	    out.setBounds(265,0,26,26);
	    out.setRolloverIcon(new ImageIcon("images/close2_hover.jpg"));
	    out.setBorderPainted(false);
	    panel.add(out);
	    jfn.add(panel);
	    //为退出按钮注册监听器,关闭当前窗口
	    out.addActionListener(event->jfn.dispose());
	   }else{
	     //QQ账号或密码输入错误,弹出提示信息
	    JOptionPane.showMessageDialog(null, 
	                                                          "你输入的账户名或密码不正确,请重新输入!");
	   }
	  }
	 }

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值