package test;
import view.loginFrame;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class test {
public static void main(String[] args){
new loginFrame();
}
}
package test;
public class UserService {
public String login(String account,String password){
if (account.equals("201909601314")&&password.equals("010059"))
return "登录成功";
return "用户名或密码错误";
}
}
package util;
import javax.swing.*;
public abstract class BaseFrame extends JFrame {
public BaseFrame(){}
public BaseFrame(String title){
super(title);
}
public void init(){
this.setFontAndSoOn();
this.addElement();
this.addListener();
this.setJFrameSelf();
}
protected abstract void setJFrameSelf();
protected abstract void setFontAndSoOn();
protected abstract void addElement();
protected abstract void addListener();
protected abstract void setFrameSelf();
}
package view;
import test.UserService;
import util.BaseFrame;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class loginFrame extends BaseFrame {
public loginFrame(){
this.setFontAndSoOn();
this.addElement();
this.addListener();
this.JFrameSelf();
}
public loginFrame(String title){
super(title);
}
@Override
protected void setJFrameSelf() {
}
private JFrame frame=new JFrame("学生管理系统 作者:软件Q197 杨红福");
private JPanel mainPanel=new JPanel();
private JLabel titleLabel=new JLabel("学 生 管 理 系 统");
private JLabel accountLabel=new JLabel("账 户");
private JLabel passwordLabel=new JLabel("密 码");
private JTextField accountField=new JFormattedTextField();
private JPasswordField passwordField=new JPasswordField();
private JButton loginButton=new JButton("登 录");
private JButton exitButton=new JButton("注 册");
public void setFontAndSoOn() {
mainPanel.setLayout(null);
mainPanel.setBackground(Color.gray);
titleLabel.setBounds(140, 40, 340, 35);
titleLabel.setFont(new Font("黑体", Font.BOLD, 34));
accountLabel.setBounds(94, 124, 90, 30);
accountLabel.setFont(new Font("黑体", Font.BOLD, 24));
accountField.setBounds(204, 124, 260, 30);
accountField.setFont(new Font("黑体", Font.BOLD, 24));
passwordLabel.setBounds(94, 174, 90, 30);
passwordLabel.setFont(new Font("黑体", Font.BOLD, 24));
passwordField.setBounds(204, 174, 260, 30);
passwordField.setFont(new Font("黑体", Font.BOLD, 24));
loginButton.setBounds(204, 232, 100, 30);
loginButton.setFont(new Font("黑体", Font.BOLD, 22));
exitButton.setBounds(364, 232, 100, 30);
exitButton.setFont(new Font("黑体", Font.BOLD, 22));
}
public void addElement(){
mainPanel.add(titleLabel);
mainPanel.add(accountLabel);
mainPanel.add(accountField);
mainPanel.add(passwordLabel);
mainPanel.add(passwordField);
mainPanel.add(loginButton);
mainPanel.add(exitButton);
frame.add(mainPanel);
}
public void addListener(){
ActionListener listener=new ActionListener(){
public void actionPerformed(ActionEvent e) {
String account=accountField.getText();
char[] value=passwordField.getPassword();
String password=new String(value);
UserService userService=new UserService();
String result=userService.login(account,password);
if(result.equals("登录成功")){
new ExamFrame();
}else{
JOptionPane.showMessageDialog(loginFrame.this,result);
accountField.setText("");
passwordField.setText("");
}
}
};
loginButton.addActionListener(listener);
}
@Override
protected void setFrameSelf() {
}
public void JFrameSelf(){
frame.setBounds(400,200,560,340);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setVisible(true);
}
}
到这里后,此后的界面创建,只要继承前面的模板,
往里面补充内容即可,而不用管流程,例如,我们要创建一个注册的界面:
package util;
public class userReigst extends BaseFrame {
@Override
protected void setJFrameSelf() {
}
@Override
protected void setFontAndSoOn() {
}
@Override
protected void addElement() {
}
@Override
protected void addListener() {
}
@Override
protected void setFrameSelf() {
}
}
例如,我们要创建一个考试界面,继承模板:
package view;
import util.BaseFrame;
public class ExamFrame extends BaseFrame {
@Override
protected void setJFrameSelf() {
}
@Override
protected void setFontAndSoOn() {
}
@Override
protected void addElement() {
}
@Override
protected void addListener() {
}
@Override
protected void setFrameSelf() {
}
}
模板模式,就是事先写好了大纲,每次往里面填自己需要的内容,
只要继承就可以,而不用重复写,提高了代码的复用性。
让我们真正专注于内容,减少流程对我们的干扰。