之前其实还欠了一篇也是界面设计的,今天补上。
这篇是模仿QQ登录的,但是呢,由于技术限制,现在还出不来登录的界面……
代码,上!
首先是界面的设计
import java.awt.FlowLayout;//引入布局
import javax.swing.ImageIcon;//引入图片
import javax.swing.JFrame;
import javax.swing.JTextField;//引入文本框
import javax.swing.JPasswordField;//引入密码框
import javax.swing.JButton;
import javax.swing.JLabel;//引入标签,有字的那种
import javax.swing.JCheckBox;//引入复选框
public class QQLogin {
//显示界面的方法
public void showUI() {
//创建窗体的对象
JFrame loginFrame = new JFrame();
//设置窗体的属性:大小 、位置居中、关闭的操作
loginFrame.setSize(600, 450);
loginFrame.setLocationRelativeTo(null);
loginFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击关闭程序停止运行
loginFrame.setTitle("QQ登录");
//设置窗体的布局(流式布局)
FlowLayout layout = new FlowLayout();
loginFrame.setLayout(layout);
//创建一个图片
ImageIcon icon = new ImageIcon(getClass().getResource("293.png"));
//创建一个显示图片的标签对象
JLabel iconLabel = new JLabel(icon);
//***注意要添加到窗体上
loginFrame.add(iconLabel);
//创建输入框的对象
JTextField nameInput = new JTextField(40);
//添加到窗体上
loginFrame.add(nameInput);
//创建注册账号的标签
JLabel registerLabel = new JLabel("注册账号");
//添加到窗体上
loginFrame.add(registerLabel);
//创建输入密码的对象
JPasswordField passwordInput=new JPasswordField(40);
loginFrame.add(passwordInput);
JLabel password= new JLabel("忘记密码");
loginFrame.add(password);
//定义复选框
JCheckBox check=new JCheckBox("记住密码");
loginFrame.add(check);
JCheckBox automation=new JCheckBox("自动登录");
loginFrame.add(automation);
//创建登录按钮
JButton enter=new JButton("登录");
loginFrame.add(enter);
//创建注册按钮
JButton register=new JButton("注册");
loginFrame.add(register);
//设置窗体可见
loginFrame.setVisible(true);
LoginListener loginListener=new LoginListener();//调用监视器类
enter.addActionListener(loginListener);//对登录按钮进行监视
register.addActionListener(loginListener);
loginListener.namefield = nameInput;//把输入的账号赋值到监视器中
loginListener.pwdfield = passwordInput;
}
//主方法
public static void main(String[] args) {
//创建界面的对象
QQLogin ui = new QQLogin();
//显示界面
ui.showUI();
}
}
然后是监听器的
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.JTextField;
import javax.swing.JPasswordField;
import java.awt.FlowLayout;
//调用监视器接口
public class LoginListener implements ActionListener {
//定义全局变量,使整个方法都可以使用
JTextField namefield;//定义监视器中使用的账号
JPasswordField pwdfield;
JTextField nameInput;
JPasswordField passwordInput;
String nameinput;
String pwdinput;
//重载接口中的抽象方法
public void actionPerformed(ActionEvent e) { //actionevent 为点击按钮的事件
String btnStr = e.getActionCommand();//得到按钮的内容
if (btnStr.equals("登录")) {
String namestr=namefield.getText();//输入的账号赋值给局部变量
String pwdstr=pwdfield.getText();
if(namestr.equals(nameinput)&&pwdstr.equals(pwdinput))//如果账号密码匹配
{
JFrame jf=new JFrame();//创建新界面
jf.setLocationRelativeTo(null);
jf.setSize(300, 200);
jf.setVisible(true);
JLabel successLabel = new JLabel("登录成功");
jf.add(successLabel);
}else {
JFrame jf=new JFrame();
jf.setLocationRelativeTo(null);
jf.setSize(300, 200);
jf.setVisible(true);
JLabel failLabel = new JLabel("登录失败");
jf.add(failLabel);
}
}
if (btnStr.equals("注册")) {
JFrame jf=new JFrame();//点击注册出现注册的新窗口
jf.setLocationRelativeTo(null);
FlowLayout layout = new FlowLayout();
jf.setLayout(layout);
jf.setSize(300, 200);
jf.setVisible(true);
JLabel nameLabel = new JLabel("账号");
jf.add(nameLabel);
nameInput = new JTextField(20);//全局变量有定义,不用再次申明类型
jf.add(nameInput);
JLabel pdwLabel = new JLabel("密码");
jf.add(pdwLabel);
passwordInput=new JPasswordField(20);
jf.add(passwordInput);
JButton btn = new JButton("完成注册");
jf.add(btn);
btn.addActionListener(this);//调用整个类,this指代LoginListener(完成注册的按钮)
}else if (btnStr.equals("完成注册")) {//在点击“完成注册”时进行赋值
nameinput=nameInput.getText();
pwdinput=passwordInput.getText();
}
}
}
最后的结果大概是这样的
读书去啦~