javax.swing设计的系统登录界面

2 篇文章 0 订阅
2 篇文章 0 订阅

特点:没有JFrame自带的边框图标等,所有的容器都看不到JFrame原始样子,支持拖动任意位置

隐藏JFrame图标任务栏

jdk1.7以上可以隐藏JFrame图标任务栏 (jframe.setType(JFrame.Type.UTILITY);),效果如下:
在这里插入图片描述
更多隐藏JFrame图标隐藏学习请点击https://www.freesion.com/article/3886827551/https://www.codenong.com/cs106567490/

接下来就是登录界面效果图展示

在这里插入图片描述

代码:

package com.example.view;


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class LoginView extends JFrame implements MouseListener {

    private static final long serialVersionUID = 1L;

    JLabel jan,bi,tu;//gif,最小化,关闭,logo,QQ,头像
    JLabel sysName;
    JLabel an1,an2,lie1,lie2;//暗色块|线
    JTextField user;//账号
    JPasswordField pass;//密码
    JPanel bgcolor;//白
    JLabel su1,mi1;//缩略图
    JLabel /*gifTxt,*/text3,text4,text5;//动图,自动登录,记住密码,找回密码,注册账号,登录
    static Point origin = new Point();//变量,用于可拖动窗体
    int a=0,b=0,c=0,d=0;//控制线
    JLabel submit;//背景


    public LoginView() {
        setBak(); // 调用背景方法

//实例化
        ImageIcon i = new ImageIcon("src/素材/bggif.gif");
//        gifTxt = new JLabel(i);
        jan = new JLabel(new ImageIcon("src/素材/最小化.png"));
        bi = new JLabel(new ImageIcon("src/素材/关闭.png"));
        sysName = new JLabel("我自己的共享业务智能应用");
        an1 = new JLabel();an2 = new JLabel();//暗调
        tu = new JLabel(new ImageIcon("src/素材/loginicon.png"));
        user = new JTextField();
        pass = new JPasswordField();
        su1 = new JLabel(new ImageIcon("src/素材/头像灰3.png"));
        mi1 = new JLabel(new ImageIcon("src/素材/密码.png"));
        lie1 = new JLabel(new ImageIcon("src/素材/直线2.png"));
        lie2 = new JLabel(new ImageIcon("src/素材/直线2.png"));
        bgcolor = new JPanel();
        text5 = new JLabel("登录");
        submit = new JLabel();

//位置
        jan.setBounds(764, 2, 32, 32);
        bi.setBounds(796, 3, 32, 32);
        sysName.setBounds(490,115,400,60);
        an1.setBounds(761, 0, 35, 35);
        an2.setBounds(795, 0, 35, 35);
//        gifTxt.setBounds(80,80,300,300);
        tu.setBounds(570, 20, 90, 85);
        user.setBounds(530, 200, 180, 40);
        pass.setBounds(530, 240, 180, 40);
        su1.setBounds(500, 210, 20, 20);
        mi1.setBounds(500, 250, 20, 20);
        lie1.setBounds(500, 230, 240, 10);
        lie2.setBounds(500, 270, 240, 10);
        bgcolor.setBounds(470, 65, 320, 400);
        text5.setBounds(606, 325, 80, 20);
        submit.setBounds(500, 320, 242, 35);
//属性
        sysName.setFont(new Font("微软雅黑", 1, 25));
        sysName.setForeground(Color.BLUE);
        an1.setBackground(new Color(0,0,0,0.3f));
        an2.setBackground(new Color(0,0,0,0.3f));
        bgcolor.setBackground(new Color(255, 255, 255));

        user.setForeground(Color.gray);
        user.setText("用户名");
        user.setOpaque(false);//透明背景
        user.setBorder(null);//去掉边框
        user.setFont(new Font("微软雅黑", Font.PLAIN, 16));//框内文字样式
        pass.setFont(new Font("微软雅黑", Font.PLAIN, 16));//框内文字样式
        pass.setBorder(null);//去掉边框

        pass.setOpaque(false);//透明背景
        pass.setForeground(Color.gray);
        pass.setText("密码");
        pass.setEchoChar((char)0);//让密码显示出来

        sysName.setFont(new Font("微软雅黑", 0, 22));
        text5.setFont(new Font("微软雅黑", 0, 15));
        text5.setForeground(Color.white);

        submit.setBackground(new Color(5, 186, 251));
        submit.setOpaque(true);


//事件区域,这么写,可以避免每个地方都监听,用于集中统一处理事件
        jan.addMouseListener(this);
        bi.addMouseListener(this);
        user.addMouseListener(this);
        pass.addMouseListener(this);
        submit.addMouseListener(this);
        this.addMouseListener(this);


        this.addMouseMotionListener(new MouseMotionListener() {//窗体拖动事件
            public void mouseMoved(MouseEvent e) {
            }
            public void mouseDragged(MouseEvent e) {
                Point p = getLocation();
                setLocation(p.x + e.getX() - origin.x, p.y + e.getY()- origin.y);
            }
        });

        user.addFocusListener(new FocusListener() {

            public void focusLost(FocusEvent e) {//失去焦点
                su1.setIcon(new ImageIcon("src/素材/头像灰3.png"));
                lie1.setIcon(new ImageIcon("src/素材/直线2.png"));
                c=0;
                if(user.getText().isEmpty()) {//判断是否为空(为了设置默认提示语)
                    user.setForeground(Color.gray);
                    user.setText("用户名");
                }
            }

            public void focusGained(FocusEvent e) {//得到焦点
                user.setForeground(Color.black);
                lie1.setIcon(new ImageIcon("src/素材/直线3.png"));
                a=1;c=1;b=0;
                su1.setIcon(new ImageIcon("src/素材/头像蓝3.png"));
                if(user.getText().equals("用户名")) {
                    user.setText("");
                }else {
                    user.setText(user.getText());
                    user.selectAll();
                }
            }
        });

        pass.addFocusListener(new FocusListener() {

            public void focusLost(FocusEvent e) {//失去焦点
                lie2.setIcon(new ImageIcon("src/素材/直线2.png"));//失去焦点换图片
                mi1.setIcon(new ImageIcon("src/素材/密码.png"));
                d=0;
                if(pass.getText().isEmpty()) {
                    pass.setForeground(Color.gray);
                    pass.setText("密码");
                    pass.setEchoChar((char)0);//让密码显示出来
                }
            }

            public void focusGained(FocusEvent e) {//得到焦点
                mi1.setIcon(new ImageIcon("src/素材/密码 (1).png"));
                lie2.setIcon(new ImageIcon("src/素材/直线3.png"));
                b=1;a=0;d=1;
                pass.setForeground(Color.black);
                pass.setEchoChar('*');//让用户输入看不见
                if(pass.getText().equals("密码")) {
                    pass.setText("");
                }else {
                    pass.setText(pass.getText());
                }
            }
        });

        this.setLayout(null);//布局

        this.add(jan);
        this.add(bi);
        this.add(sysName);
        this.add(an1);
        this.add(an2);
        this.add(tu);
//        this.add(gifTxt);
        this.add(lie1);
        this.add(lie2);
        this.add(user);
        this.add(pass);
        this.add(su1);
        this.add(mi1);
        this.add(text5);
        this.add(submit);
        this.add(bgcolor);

        this.setSize(835, 500);
//        this.setIconImage(Toolkit.getDefaultToolkit().createImage("素材\\透明照片.png"));//窗体图标
        this.setLocationRelativeTo(null);//保持居中
        this.setUndecorated(true);//去顶部 让JFrame自带窗口标题栏不可见
        this.setFocusable(true);//面板首先获得焦点
        this.setBackground(new Color(255,255,255));//背景颜色
        this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
        this.setAlwaysOnTop(true);//最顶层
        this.setVisible(true);//显示
    }


    public static void main(String[] args) {// 启动入口
        new LoginView();
    }


//鼠标的时间监听,有很多字母用于判断状态

    public void mouseClicked(MouseEvent e) {}//点击不恢复

    public void mousePressed(MouseEvent e) {//点击后
        if (e.getSource() == jan) {
            setExtendedState(JFrame.ICONIFIED);
        }else if(e.getSource()== this) {
            origin.x = e.getX();
            origin.y = e.getY();
        }else if(e.getSource()==bi) {
            System.exit(0);
        }else if(e.getSource()==submit||e.getSource()==text5) {
            text5.setFont(new Font("微软雅黑", 0, 14));
            dispose();

            String users = user.getText();
            String password = pass.getText();
            System.out.println("您已点击登录按钮");

            if(users.equals("向到极致")&&password.equals("666666")) {//登录成功的提示弹窗,可以在此进入主界面
                JOptionPane.showMessageDialog(null, "登录成功");
            }else {//
                JOptionPane.showMessageDialog(null, "用户名:盖伦 密码:666666");
                new qwe();
            }

        }
    }

    public void mouseReleased(MouseEvent e) {//点击时
        if(e.getSource()==submit||e.getSource()==text5) {
            text5.setFont(new Font("微软雅黑", 0, 15));
        }
    }

    public void mouseEntered(MouseEvent e) {//悬停
        if (e.getSource() == jan) {
            an1.setOpaque(true);
        }else if(e.getSource()==bi) {
            an2.setOpaque(true);
        }else if(e.getSource()==user) {
            if(a==0&&c==0) {
                lie1.setIcon(new ImageIcon("src/素材/直线4.png"));
            }
        }else if(e.getSource()==pass) {
            if(b==0&&d==0) {
                lie2.setIcon(new ImageIcon("src/素材/直线4.png"));
            }
        }else if(e.getSource()==text3) {
            text3.setForeground(Color.GRAY);
        }else if(e.getSource()==text4) {
            text4.setForeground(Color.GRAY);
        }
    }

    public void mouseExited(MouseEvent e) {//悬停后
        if (e.getSource() == jan) {
            an1.setOpaque(false);
        }else if(e.getSource()==bi) {
            an2.setOpaque(false);
        }else if(e.getSource()==user) {
            if(a==0) {
                lie1.setIcon(new ImageIcon("src/素材/直线2.png"));
            }
        }else if(e.getSource()==pass) {
            if(b==0) {
                lie2.setIcon(new ImageIcon("src/素材/直线2.png"));
            }
        }else if(e.getSource()==text3) {
            text3.setForeground(new Color(170, 170, 170));
        }else if(e.getSource()==text4) {
            text4.setForeground(new Color(170, 170, 170));
        }

    }

    public void setBak() {
        ((JPanel) this.getContentPane()).setOpaque(false);
        ImageIcon img = new ImageIcon("src/素材/bgp.jpg");//这里也可以找合适的动图来作背景图显示
        JLabel background = new JLabel(img);
        this.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE));
        background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
    }
}

更多:如果你的项目窗体界面不需要JFame自带的样式,需要自定义一个Frame窗体,请参考我的另外一篇文章。

布局与封装、图形绘制、资源、其他代码(如布局、图像绘制等)请联系我。

package com.shou.loginfjame; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Cursor; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.SQLException; import java.util.List; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.xml.bind.util.ValidationEventCollector; import com.shou.LoginUtil.LoginUser; import com.shou.dao.LoginDao; import com.shuo.util.ValidCode; public class LoginFjame extends JFrame implements ActionListener { private JFrame frame = new JFrame("登录"); private JPanel panel = new JPanel(); private JLabel tiel = new JLabel("龍丶逸小说登录系统"); // 创建标题 private JLabel userLabel = new JLabel("用户名:"); // 创建UserJLabel private JTextArea userText=new JTextArea("请输入内容",7, 30); // 获取登录名 private JLabel passLabel = new JLabel("密 码:"); // 创建PassJLabel private JPasswordField passText = new JPasswordField(20); // 密码框隐藏 private JLabel verCodeLa = new JLabel("验证码:"); // 验证码 private JTextField inputCode = new JTextField(); // 验证码框 private ValidCode vcode = new ValidCode(); // 验证码内容 JTextField jt_code; private JButton loginButton = new JButton("登录"); // 创建登录按钮 private JButton registerButton = new JButton("注 册"); // 创建注册按钮 private JButton newPasswordButton = new JButton("忘记密码"); // 创建注册按钮 private JButton exitButton = new JButton("退出"); JTextField field = null; public LoginFjame() { System.out.println("====================================="); System.out.println("== 龍丶逸小说系统 =="); System.out.println("== V1.1.1.0 =="); System.out.println("====================================="); WinLogin(); } public void WinLogin() { panel.setLayout(null); // 设置布局为 null // 创建标题名称 this.tiel.setFont(new Font("宋体", 1, 20)); this.tiel.setBounds(150, 30, 300, 25); this.panel.add(this.tiel); // 创建 UserJLabel this.userLabel.setFont(new Font("宋体", 1, 13)); this.userLabel.setBounds(70, 80, 80, 25); this.panel.add(userLabel); // 创建文本域用于用户输入 this.userText.setBounds(145, 80, 165, 25); this.panel.add(this.userText); // 注册 this.registerButton.setFont(new Font("宋体", 1, 15)); this.registerButton.setContentAreaFilled(false); this.registerButton.setBorderPainted(false); /* registerButton.setBackground(Color.red); */ this.registerButton.setBounds(320, 80, 100, 25); this.panel.add(this.registerButton); // 变成小手 this.registerButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); // 创建PassJLabel this.passLabel.setFont(new Font("宋体", 1, 13)); this.passLabel.setBounds(70, 110, 80, 25); this.panel.add(this.passLabel); // 密码输入框 隐藏 this.passText.setBounds(145, 110, 165, 25); this.panel.add(this.passText); // 忘记密码 this.newPasswordButton.setFont(new Font("宋体", 1, 15)); this.newPasswordButton.setContentAreaFilled(false); this.newPasswordButton.setBorderPainted(false); /* registerButton.setBackground(Color.red); */ this.newPasswordButton.setBounds(320, 110, 100, 25); this.panel.add(this.newPasswordButton); // 变成小手 this.newPasswordButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); // 验证码code this.verCodeLa.setFont(new Font("宋体", 1, 13)); this.verCodeLa.setBounds(70, 140, 80, 25); this.panel.add(this.verCodeLa); // 验证码框 this.inputCode.setBounds(145, 140, 165, 25); this.panel.add(this.inputCode); // 验证码图片 this.vcode.setBounds(320, 140, 165, 25); this.panel.add(this.vcode); System.out.println(this.vcode); // 创建登录按钮 this.loginButton.setFont(new Font("宋体", 1, 15)); this.loginButton.setBounds(95, 190, 80, 25); this.panel.add(this.loginButton); // 变成小手 this.loginButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); // 退出按钮 this.exitButton.setFont(new Font("宋体", 1, 15)); this.exitButton.setBounds(230, 190, 80, 25); this.panel.add(this.exitButton); // 变成小手 this.exitButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); // 设置窗体的位置及大小 this.frame.setSize(460, 355); frame.setLocationRelativeTo(null); // 在屏幕中居中显示 frame.add(this.panel); // 添加面板 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置X号后关闭 //设置按钮 this.registerButton.addActionListener(this); //注册按钮 this.newPasswordButton.addActionListener(this); //忘记密码 this.loginButton.addActionListener(this); //登录 this.exitButton.addActionListener(this); //退出 // 往窗体里放其他控件 frame.setVisible(true); // 设置窗体可见 } @Override public void actionPerformed(ActionEvent e) { JButton bt = (JButton) e.getSource(); // 获取按钮信息 String str = bt.getText(); // 获取用户名 String name = this.userText.getText().trim(); // 获取密码 String password = this.passText.getText().trim(); // 获取验证码 String code = this.inputCode.getText().trim(); // 获取jsp验证码 String vcode = this.vcode.getCode(); // 登录 if (str.equals("登录")) { System.out.println("登录"); // 验证码转为大写 String Dcode = code.toUpperCase(); String Dvcode = vcode.toUpperCase(); // 验证码判断 if (Dcode.equals(Dvcode)) { //获取页面的用户名 String username=this.userText.getText().trim(); // 根据用户名查看是否有该用户 try { List loginUser=new LoginDao().queryAll(username); String a=loginUser.toString(); System.out.println(a.toString()); if(!a.toString().equals("[]")){ //密码判断 String mysqlPasword=loginUser.get(0).l_password(); if(mysqlPasword.equals(password)){ //登录成功 JOptionPane pane = new JOptionPane("登录成功"); JDialog dialog = pane.createDialog(this, "警告"); dialog.show(); }else{ JOptionPane pane = new JOptionPane("密码错误错误,请重新输入"); JDialog dialog = pane.createDialog(this, "警告"); dialog.show(); } }else{ JOptionPane pane = new JOptionPane("用户名错误,请重新输入"); JDialog dialog = pane.createDialog(this, "警告"); dialog.show(); } /*System.out.println(loginUser.toString()); String sqlUername=loginUser.get(0).getL_username();*/ /*int sqlpassword=loginUser.get(0).getL_power();*/ /*System.out.println("loginF:"+sqlUername);*/ } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } else { JOptionPane pane = new JOptionPane("验证码错误,请重新输入"); JDialog dialog = pane.createDialog(this, "警告"); System.out.println(dialog.getFont()); dialog.show(); } } else // 退出 if (str.equals("退出")) { System.out.println("退出"); System.exit(0); } else // 注册 if (str.equals("注 册")) { System.out.println("注 册"); } // 注册 else if (str.equals("忘记密码")) { System.out.println("忘记密码"); } else { System.out.println("异常错误"); } } public boolean isValidCodeRight() { System.out.println(this.jt_code.getText()); if (this.jt_code == null) { return false; } if (this.vcode == null) { return true; } if (this.vcode.getCode().equals(this.jt_code.getText())) { return true; } return false; } public static void main(String[] args) { new LoginFjame(); } }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值