2、java编写登录界面

此文最早发表自我的博客园博文《JAVASWING》

一、使用java Swing写个登陆界面,感受一下布局管理器的特性和熟悉一下控件的使用

package com.swing;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.border.LineBorder;

/**
 * java中最常用的三种布局管理器 ,布局管理器中的控件将失去setSize与setBound的功能
 * 1、BorderLayout --》分为东西南北中,具有自动伸缩的能力,也就是你的控件是多大,相当于html中的内联元素
 * 就会扩张到多大,直到所有的控件充满你设置的JFrame空间位置,东,向西伸缩,高度默认充满父控件,中,向四周伸缩
 * 西,向东伸缩,,高度充满父控件,南,向北伸缩,宽度充满父控件,北,向南伸缩。宽度充满父控件
 * 2、GridLayout -- 》网格布局,根据行列数和水平以及垂直间距来自动平均分配空间
 * 3、FlowLayout -- 》流布局,可以设置它从什么位置开始布局,空间为控件默认的大小,相当于html中的内联元素
 * @author may
 *
 */

public class Login extends JFrame {

    private static final long serialVersionUID = 5083131604476590600L;

    private JPanel main;// 主体
    private JPanel header;// 头部panel
    private JPanel body;// 窗体
    // 布局管理的每个空位只能放一个控件,所以需要放JPanel
    private JPanel username;// 用户名输入栏
    private JPanel password;// 用户密码输入栏
    private JLabel name_label;
    private JTextField name_text;
    private JLabel pass_label;
    private JLabel header_text;
    private JPanel login;
    private JButton submit;
    private JPasswordField pass_text;
    private JLabel tip;

    public Login() {
        this.setSize(320, 250);
        // 窗口不能变
        this.setResizable(false);
        // 头部panel,类似html页面的div
        header = new JPanel();
        
        header_text = new JLabel("<html>登陆界面</html>");
        // 设置水平居中
        header_text.setHorizontalAlignment(JLabel.CENTER);
        // 设置字体
        header_text.setFont(new Font("宋体", Font.BOLD, 18));
        // 设置背景色
        header_text.setBackground(new Color(242, 242, 242));
        // 在布局管理器中设置控件的大小是无效的
        // header_text.setSize(300, 20);
        // 设置手型
        header.setCursor(new Cursor(Cursor.MOVE_CURSOR));
        // 设置边框
        header.setBorder(new LineBorder(new Color(242, 242, 242)));
        header.add(header_text);
        // 设置登陆体5行1列,垂直10像素
        body = new JPanel(new GridLayout(5, 1, 0, 10));
        body.setBackground(Color.white);
        // 设置水平布局,默认水平居中开始
        username = new JPanel(new FlowLayout(FlowLayout.CENTER));
        username.setBackground(Color.white);
        // 用户名
        name_label = new JLabel("<html>账 号:</html>");
        // 用户名输入框
        name_text = new JTextField(15);
        username.add(name_label);
        username.add(name_text);
        // 密码输入
        pass_label = new JLabel("密 码:");
        pass_text = new JPasswordField(15);
        password = new JPanel();
        password.setBackground(Color.white);
        password.add(pass_label);
        password.add(pass_text);
        // 登陆
        submit = new JButton("登陆");
        submit.setBackground(Color.green);
        submit.setFont(new Font("宋体", Font.BOLD, 15));
        submit.setForeground(Color.white);
        login = new JPanel(new FlowLayout());
        login.setBackground(Color.white);
        login.add(submit);
        // 空白panel,只是为了占位
        JPanel jpanel1 = new JPanel();
        jpanel1.setBackground(Color.white);
        body.add(jpanel1);
        body.add(username);
        body.add(password);
        body.add(login);
        tip = new JLabel("注册新用户|忘记密码?");
        tip.setHorizontalAlignment(JLabel.RIGHT);
        tip.setVerticalAlignment(JLabel.NORTH);
        body.add(tip);
        main = new JPanel(new BorderLayout());
        main.add(body);
        main.setBackground(Color.white);
        main.add(header, BorderLayout.NORTH);
        this.getContentPane().add(main, BorderLayout.CENTER);
        // 设置为水平居中
        this.setLocationRelativeTo(null);
        // 设置点击关闭按钮时,关闭窗体,推出程序
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);

    }

    public static void main(String[] args) {
        new Login();
    }

}

二、界面

在这里插入图片描述

以下是一个简单的 Java 编写的 QQ 登录界面的示例代码: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class QQLogin extends JFrame implements ActionListener { private JLabel label1, label2; private JTextField text1; private JPasswordField text2; private JButton button1, button2; public QQLogin() { setTitle("QQ登录"); setSize(300, 180); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); setLocationRelativeTo(null); label1 = new JLabel("QQ号码:"); label2 = new JLabel("QQ密码:"); text1 = new JTextField(20); text2 = new JPasswordField(20); button1 = new JButton("登录"); button2 = new JButton("取消"); JPanel panel1 = new JPanel(); panel1.setLayout(new GridLayout(2, 1)); panel1.add(label1); panel1.add(label2); JPanel panel2 = new JPanel(); panel2.setLayout(new GridLayout(2, 1)); panel2.add(text1); panel2.add(text2); JPanel panel3 = new JPanel(); panel3.setLayout(new FlowLayout()); panel3.add(button1); panel3.add(button2); setLayout(new BorderLayout()); add(panel1, BorderLayout.WEST); add(panel2, BorderLayout.CENTER); add(panel3, BorderLayout.SOUTH); button1.addActionListener(this); button2.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSource() == button1) { String qq = text1.getText().trim(); String pwd = new String(text2.getPassword()).trim(); if ("".equals(qq) || "".equals(pwd)) { JOptionPane.showMessageDialog(this, "请输入QQ号码和密码!", "提示", JOptionPane.WARNING_MESSAGE); return; } // TODO: 在这里添加登录验证逻辑 JOptionPane.showMessageDialog(this, "QQ号码或密码错误,请重新输入!", "提示", JOptionPane.WARNING_MESSAGE); text1.setText(""); text2.setText(""); } else if (e.getSource() == button2) { System.exit(0); } } public static void main(String[] args) { QQLogin login = new QQLogin(); login.setVisible(true); } } ``` 该示例使用了 Java 的图形用户界面(GUI)库 Swing,通过 JFrame、JLabel、JTextField、JPasswordField 和 JButton 等组件实现了一个简单的 QQ 登录界面。其中,actionPerformed 方法中的 TODO 部分可以根据实际需要添加登录验证逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值