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 ( ) {
}
}
模板模式,就是事先写好了大纲,每次往里面填自己需要的内容,
只要继承就可以,而不用重复写,提高了代码的复用性。
让我们真正专注于内容,减少流程对我们的干扰。