GUI———登录界面
登录界面的整体思路:
首先,创建一个注册视图,再创建一个登录视图,再将登录视图和注册视图结合为一个集成视图,最后将集成视图嵌入进主视图,最终成功创建了登录界面。
亮点是有可切换界面的选项卡组件
1、RegisterView注册视图
package geng.view;
import java.awt.*;
import javax.swing.*; //注册视图 第一个做
import java.awt.event.*;
import geng.model.*;
import geng.handle.*;
public class RegisterView extends JPanel implements ActionListener {
Register register; // 创建一个注册对象 下面需要用到
JTextField inputID,inputBirth;//创建ID和生日的文本框
JPasswordField inputPassword;//使密码框可编辑
JButton buttonRegister; // 注册按钮
RegisterView(){
register = new Register();
inputID = new JTextField(12); //定义文本域 支支持单行输出
inputPassword = new JPasswordField(12);
//密码框,可输入长度为12
inputBirth = new JTextField(12);
buttonRegister = new JButton("注册");
//下面将所需按钮添加至注册面板
add(new JLabel("ID:"));
//Label 文本可视化
add(inputID);
add(new JLabel("密码:"));
add(inputPassword);
add(new JLabel("出生日期( * * * * - * * - * *):"));
add(inputBirth);
add(buttonRegister);
buttonRegister.addActionListener(this);//监听器 返回此对象
}
public void actionPerformed(ActionEvent e){
register.setID(inputID.getText()); //监听器
char [] pw = inputPassword.getPassword(); //设置数组并返回此对象
register.setPassword(new String(pw));
register.setBirth(inputBirth.getText());
HandleRegister handleRegister = new HandleRegister();
handleRegister.writeRegisterModel(register);
}
}
2、LoginView登录视图
package geng.view;
import java .awt.;
import javax.swing.*;
import java.awt.event.*; //第二步 弄登录视图
import geng.model.*;
import geng.handle.*;
public class LoginView extends JPanel implements ActionListener{
// 创建新对象
Login login;
JTextField inputID;
//创建ID文本框
JPasswordField inputPassword;
//创建登录按钮
JButton buttonLogin;
boolean loginSuccess; //定义接口变量
LoginView() {
login = new Login();
//新建对象
inputID = new JTextField(12);
//inputID为自定义对象
inputPassword = new JPasswordField(12);
//定义文本限定长度
buttonLogin = new JButton("登录");
//按钮添加可视化
add(new JLabel("ID:"));
add(inputID);
add(new JLabel("密码:"));
add(inputPassword);
add(buttonLogin);
buttonLogin.addActionListener(this);
//监听器 返回此对象
}
public boolean isLoginSuccess(){
return loginSuccess;
}
//定义,返回接口变量
public void actionPerformed(ActionEvent e) {
login.setID(inputID.getText());
char [] pw = inputPassword.getPassword();
login.setPassword(new String(pw));
HandleLogin handleLogin = new HandleLogin();
login = handleLogin.queryVerify(login);
loginSuccess = login.getLoginSuccess();
}
}
3、登录界面注册界面的集成界面
此界面是我添加了一个选项卡,将两部分集成
package geng.view;
import javax.swing.*; //第三步 登录和注册视图集成为一个视图
import java.awt.*;
public class RegisterAndLoginView extends JPanel{
JTabbedPane p;
//定义一个选项卡组件
//两个视图的切换 选项卡组件
RegisterView registerView;//创建新对象
LoginView loginView;
public RegisterAndLoginView(){
registerView = new RegisterView();
loginView = new LoginView();
setLayout(new BorderLayout()); //布局管理器
p = new JTabbedPane();
//添加选项卡按钮
p.add("我要注册",registerView); //
p.add("我要登录",loginView);
p.validate(); //登录验证
add(p,BorderLayout.CENTER); // 边界布局 东西南北中
}
public boolean isLoginSuccess() {
return loginView.isLoginSuccess();
}
}
MainView主界面
import geng.view.RegisterAndLoginView;
import javax.swing.*;
import java.awt.*; //最后和主视图结合成为最后的完整界面
import java.awt.event.*;
public class MainWindow extends JFrame implements ActionListener{
JButton computerButton;
// 创建新对象
RegisterAndLoginView view;
MainWindow(){
//设置尺寸
setBounds(100,100,800,260);
view = new RegisterAndLoginView();
computerButton = new JButton("玩猜数字");
//返回监听事件
computerButton.addActionListener(this);
//边界布局
add(view,BorderLayout.CENTER);
add(computerButton,BorderLayout.NORTH);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
//可视化
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(view.isLoginSuccess() == false){
// 判断是否登陆成功
JOptionPane.showMessageDialog(null,"请登录","登录提示",
JOptionPane.WARNING_MESSAGE);
// 显示一个具有ok按钮的对话框
}
else {
WindowGuessNumber win = new WindowGuessNumber();
win.setTitle("猜数字");
}
}
public static void main(String args[]) {
MainWindow window = new MainWindow();
window.setTitle("登陆后玩猜数字游戏");
}
}