在此谨完成简单介绍界面开发、动作监听(Java)

      界面开发首先需应用到两个界面开发包。

package com.ly0731;
import javax.swing.*;

      创建对象并调用指定方法后再根据所需创建JFrame对象(窗口):调整布局,对组件再设置其属性,添加到窗体后再实现可视化。

public void showUI()
    {
        JFrame jf = new JFrame ();
        jf.setTitle ("LoginUI");
        jf.setSize (400, 500);
        jf.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
        jf.setLocationRelativeTo (null);
        FlowLayout fl = new FlowLayout ();
        jf.setLayout (fl);
        JLabel iconJla = new JLabel ();
        JLabel nameJla = new JLabel ();
        JLabel pwdJla = new JLabel ();
        JTextField nameJtf = new JTextField ();
        JPasswordField pwdJpf = new JPasswordField ();
        JButton loginJbt = new JButton ();
        JButton registerJbt = new JButton ();
        JCheckBox rememberJcb = new JCheckBox ();
        JCheckBox autoLoginJcb = new JCheckBox ();
        JRadioButton adminJrb = new JRadioButton ();
        JRadioButton userJrb = new JRadioButton ();
        JRadioButton vipJrb = new JRadioButton ();

        ButtonGroup jrbGroup = new ButtonGroup ();
        jrbGroup.add (adminJrb);
        jrbGroup.add (userJrb);
        jrbGroup.add (vipJrb);


        nameJla.setText ("账号: ");
        pwdJla.setText ("密码:");
        loginJbt.setText ("登录");
        registerJbt.setText ("注册");
        rememberJcb.setText ("记住密码");
        autoLoginJcb.setText ("自动登录");
        adminJrb.setText ("管理员");
        userJrb.setText ("普通用户");
        vipJrb.setText ("VIP用户");
        Dimension dim = new Dimension (310, 35);
        nameJtf.setPreferredSize (dim);
        pwdJpf.setPreferredSize (dim);
        jf.add (iconJla);
        jf.add (nameJla);
        jf.add (nameJtf);
        jf.add (pwdJla);
        jf.add (pwdJpf);
        jf.add (rememberJcb);
        jf.add (autoLoginJcb);
        jf.add (adminJrb);
        jf.add (userJrb);
        jf.add (vipJrb);
        jf.add (loginJbt);
        jf.add (registerJbt);
        jf.setVisible (true);
}



    public static void registerUI()
    {
        JFrame njf = new JFrame ();
        njf.setTitle ("注册界面");
        njf.setSize (400, 500);
        njf.setLocationRelativeTo (null);
        FlowLayout nfl = new FlowLayout ();
        njf.setLayout (nfl);
        JLabel newNameJla = new JLabel ();
        JLabel newPwdJla = new JLabel ();
        JTextField newNameJtf = new JTextField ();
        JPasswordField newPwdJpf = new JPasswordField ();
        JButton OKJbt = new JButton ();
        ButtonGroup njrbGroup = new ButtonGroup ();
        newNameJla.setText ("新账号: ");
        newPwdJla.setText ("新密码:");
        OKJbt.setText ("确定");
        Dimension ndim = new Dimension (310, 35);
        newNameJtf.setPreferredSize (ndim);
        newPwdJpf.setPreferredSize (ndim);
        njf.add (newNameJla);
        njf.add (newNameJtf);
        njf.add (newPwdJla);
        njf.add (newPwdJpf);
        njf.add (OKJbt);
        njf.setVisible (true);}



    public static void main(String[] args) {
        LoginUI ui = new LoginUI();
        ui.showUI();
    }

      添加动作监听器。即创建一个新的类,重写方法后在其中添加代码,利用在前一个界面类中创建对象使得绑定按钮,在监听类中获取前一个界面的文本。

static LoginListener ll = new LoginListener ();



        ll.nameJtf = nameJtf;
        ll.pwdJpf = pwdJpf;
        System.out.println (ll.nameJtf.hashCode ());
        System.out.println (nameJtf.hashCode ());
        loginJbt.addActionListener (ll);
        registerJbt.addActionListener (ll);


        ll.newNameJtf=newNameJtf;
        ll.newPwdJpf=newPwdJpf;

      附:将创建的JFrame对象存储在第一个类中,在监听类中只需将监听代码写一遍。

public class LoginListener implements ActionListener
    public void actionPerformed(ActionEvent e)
    {
        System.out.println ("按钮被点击了...");
        String btnText = e.getActionCommand ();
        System.out.println ("按钮的文本是:" + btnText);
        String name = nameJtf.getText ();
        String pwd = pwdJpf.getText ();
        System.out.println ("账号:" + name + "\n密码:" + pwd);
        if(btnText.equals ("登录"))
        {
            System.out.println ("登录按钮被点击了...");

            //这里添加逻辑代码使其能将登录时输入的数据与数据库中的数据一一比对
            
        }
        else if(btnText.equals ("注册"))
        {
            System.out.println ("注册按钮被点击了...");
            LoginUI.registerUI();
        }
        if(btnText.equals ("确定"))
        {
        System.out.println ("按钮被点击了...");
        String newName = newNameJtf.getText ();
        String newPwd = newPwdJpf.getText ();
        User user = new User ();
        user.name=newName;
        user.pwd=newPwd;
        userList[index++]=user;
        System.out.println ("新账号:" + newName + "\n新密码:" + newPwd);
        System.out.println("注册成功!");
        JOptionPane.showMessageDialog (null, "登录成功!");
        }
    }

      注:存储一组数据可以创建一个新的类,定义几个所需的参数,在监听类中创建数组再将从窗口中获得的数据赋予到新类中的参数数组。

for (int i = 0; i < userList.length; i++) {
                User user = userList[i];
                if (user!=null)
                {
                    if(name.equals (user.name) && pwd.equals (user.pwd))
                    {
                        System.out.println ("登录成功!");
                        JOptionPane.showMessageDialog (null, "登录成功!");
                        return;
                    }
                    else
                    {
                        JOptionPane.showMessageDialog (null, "登录失败!");
                        System.out.println ("登录失败!");
                        return;
                    }
                }
            }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值