界面开发首先需应用到两个界面开发包。
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;
}
}
}