刚刚接触java,写了一段代码,一个登录窗口

本文介绍了一个使用Java Swing创建的简单登录窗口实现方法。该窗口包括用户名和密码输入框,并具备登录验证功能。通过GridBagLayout实现了界面元素的灵活布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package main$system;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

/**
 * 登陆窗口
 * 
 * @author shado
 *
 */
public class LoginWindow extends JPanel {
	private static final long serialVersionUID = 1L;
	static final int WIDTH = 260;// 顶层窗口的宽度
	static final int HEIGHT = 150;// 顶层窗口的高度
	JFrame loginframe;

	/**
	 * 此方法用于添加控件到容器中 按照网格组布局方式排列组件的方法
	 * 
	 * @param c
	 * @param constraints
	 * @param x
	 *            指控件位于第几列
	 * @param y
	 *            指控件位于第几行
	 * @param w
	 *            指控件需要占几列
	 * @param h
	 *            指控件需要占几行
	 */
	public void add(Component c, GridBagConstraints constraints, int x, int y, int w, int h) {
		constraints.gridx = x;
		constraints.gridy = y;
		constraints.gridwidth = w;
		constraints.gridheight = h;
		add(c, constraints);// 这句话的意思是:把组件c和约束条件constraints添加到对象panel中,因为该类是继承自JPanel的子类,所以可直接调用父类add方法
	}

	/**
	 * 这是一个构造方法
	 */
	LoginWindow() {
		loginframe = new JFrame("欢迎使用李炎帐号存储程序");// loginframe 是登陆界面的顶层框架
		loginframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置loginframe的默认关闭方式
		GridBagLayout lay = new GridBagLayout();// lay 网格组布局对象
		setLayout(lay);// 中间容器设置为网格组布局
		loginframe.add(this, BorderLayout.WEST);
		loginframe.setSize(WIDTH, HEIGHT);
		Toolkit kit = Toolkit.getDefaultToolkit();// 获得Toolkit对象
		Dimension screenSize = kit.getScreenSize();// 获得Dimension对象
		int width = screenSize.width;// 获得屏幕宽度
		int height = screenSize.height;// 获得屏幕高度
		int x = (width - WIDTH) / 2;// 登陆窗口居中
		int y = (height - HEIGHT) / 2;
		loginframe.setLocation(x, y);// 登录窗口位置
		JButton ok = new JButton("登陆");// ok 登陆按钮
		JButton cancel = new JButton("退出");// cancel 退出按钮
		JLabel title = new JLabel("帐号存储程序登陆入口");
		JLabel username = new JLabel("用户名");
		JLabel password = new JLabel("密码");
		final JTextField usernameinput = new JTextField(13);
		final JPasswordField passwordinput = new JPasswordField(13);
		GridBagConstraints constraints = new GridBagConstraints();// constraints 网格组布局管理器约束对象
		constraints.fill = GridBagConstraints.NONE;
		constraints.anchor = GridBagConstraints.EAST;
		constraints.gridwidth = 4;
		constraints.gridheight = 4;
		add(title, constraints, 2, 0, 2, 1);
		add(username, constraints, 1, 1, 2, 1);
		add(password, constraints, 1, 2, 2, 1);
		add(usernameinput, constraints, 3, 1, 2, 1);
		add(passwordinput, constraints, 3, 2, 2, 1);
		add(ok, constraints, 1, 3, 1, 1);
		add(cancel, constraints, 3, 3, 1, 1);
		loginframe.setResizable(false);//登陆窗口大小不可变
		loginframe.setVisible(true);//登陆窗口可见
		//ok按钮添加一个动作监听器,当单机“确定”按钮后,调用actionPerformed方法,执行方法内的命令
		ok.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent Event) {
				String usernametext=usernameinput.getText();//usernametext获取文本框内容
				@SuppressWarnings("deprecation")
				String passwordtext=passwordinput.getText();//passwordtext获取文本框内容
				String str=new String(passwordtext);
				
				System.out.println("usernametext:"+usernametext);
				System.out.println("passwordtext:"+passwordtext);
				
				boolean x=(usernametext.equals("liyan123"));
				boolean y=(str.equals("Liyan1234"));
				boolean z=(x&&y);
				if(z==true) {
					new MainWindow();
					loginframe.dispose();
				}else if(z==false){
					usernameinput.setText("");
					passwordinput.setText("");
				}
				
			}
		});
		//cancel按钮添加一个动作监听器,当单机“退出”按钮后,调用actionPerformed方法,执行方法内的命令
		cancel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent Event) {
				loginframe.dispose();
			}
		});

	}

	public static void main(String args[]) {
		LoginWindow login = new LoginWindow();

	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值