实际效果
介绍
使用的类
GridBagConstraints类
创建对象后可以通过调用访问成员属性来修改数值
再作为参数传入方法来指定类型的属性(宽高)
密码框JPasswordField
输入的内容是默认是隐藏的
重写actionPerformed方法
actionPerformed
方法是为了实现自定义的身份验证逻辑。通过重写这个方法,我们可以在用户点击登录按钮时执行我们自己的验证逻辑,而不仅仅是使用默认的行为。
在实际开发中,重写方法可以让我们根据具体需求来定制代码逻辑,使得程序更加灵活和符合特定的业务需求。这样做可以提高代码的可维护性和可扩展性,同时也有助于避免代码重复。
这边也提高了程序的可拓展性 我们可以接入双列集合中的用户名和密码
代码
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class LoginSystem extends JFrame implements ActionListener { private JTextField usernameField; private JPasswordField passwordField; public LoginSystem() { //初始化界面 setTitle("登录系统"); setSize(300, 150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //创建面板对象 JPanel panel = new JPanel(new GridBagLayout()); //GridBagConstraints是在图形化界面中控制组件大小和位置的 GridBagConstraints c = new GridBagConstraints(); //可以自定义组件的位置 c.insets = new Insets(5, 5, 5, 5); //创建无图像且标题为空字符串JLabel JLabel userLabel = new JLabel("用户名:"); c.gridx = 0; c.gridy = 0; panel.add(userLabel, c); //创建文本框JTextField usernameField = new JTextField(15); c.gridx = 1; c.gridy = 0; panel.add(usernameField, c); //创建无图像且标题为空字符串JLabel JLabel passLabel = new JLabel("密码:"); c.gridx = 0; c.gridy = 1; panel.add(passLabel, c); //创建密码框JPasswordField passwordField = new JPasswordField(15); c.gridx = 1; c.gridy = 1; panel.add(passwordField, c); //创建按钮的对象 JButton loginButton = new JButton("登录"); loginButton.addActionListener(this); c.gridx = 0; c.gridy = 2; c.gridwidth = 2; c.anchor = GridBagConstraints.CENTER; panel.add(loginButton, c); //最后把面板添加进去 add(panel); //可以将窗口设置到屏幕中央 setLocationRelativeTo(null); //设置窗口可显示 setVisible(true); } @Override public void actionPerformed(ActionEvent e) { String username = usernameField.getText(); String password = new String(passwordField.getPassword()); // 在这里可以添加验证逻辑,比如检查用户名和密码是否匹配 if (username.equals("Dduo") && password.equals("123")) { JOptionPane.showMessageDialog(this, "登录成功"); } else { JOptionPane.showMessageDialog(this, "登录失败,请重试"); } } public static void main(String[] args) { SwingUtilities.invokeLater(() -> new LoginSystem()); } }