java-learn(8):拼图小游戏
拼图小游戏
- App
- GameJFrame
- LoginJFrame
- RegisterJFrame
- Tool
- User
声明:这个小项目是跟着黑马的视频做的
App
package demo;public class App {public static void main(String[] args) {// 获取菜单页面LoginJFrame loginFrame = new LoginJFrame();}
}
GameJFrame
package demo;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import java.util.Random;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyListener;
import java.awt.event.MouseListener;public class GameJFrame extends JFrame implements KeyListener{//随机生成用于打乱图片的数据int[][] data = new int[4][4];int[][] win = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,0}};int step = 0;int x = 3;int y = 3;String start = "D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\animal\\animal3\\";public GameJFrame() {//初始化界面init();// 初始化打乱图片的数据initData();// 初始化菜单initJMenuBar();//初始化图片initImage();//显示界面this.setVisible(true);}private void init() {//设置界面的宽高this.setSize(603,680);//设置标题this.setTitle("拼图单机版 v1.0");// 设置界面置顶this.setAlwaysOnTop(true); // 这个就代表如果有多个界面 就按先后顺序来显示界面//设置界面居中 显示界面时 是位于界面中间的this.setLocationRelativeTo(null);//设置页面关闭模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 参数是一个接口中的一个常量 这个是3 代表的是如果有多个窗口 只要关闭一个 程序就终止//如果不写setLayout 系统会默认调用BoardLayout 这样会忽略setBounds :布局管理器会覆盖手动设置的位置和大小 所以JLable会堆积在中央区域this.setLayout(null);//添加鼠标监听器事件this.addKeyListener(this);}private void initJMenuBar(){/** 初始化一个菜单栏目就要创建一个JMenuBar对象* 栏目中有很多选项 一个选项要创建一个JMenu对象* 选项中有很多条目,一个条目需要创建一个JMenuItem对象*** *///创建菜单对象JMenuBar jMenuBar = new JMenuBar();//创建菜单上两个选项//创建更换图片菜单项目JMenu changepictureJMeun = new JMenu("更换图片");JMenu functionJMenu = new JMenu("功能");JMenu aboubtJMenu = new JMenu("关于我们");//创建选项下的条目对象JMenuItem replayItem = new JMenuItem("重新开始");JMenuItem SportItem = new JMenuItem("运动");//给运动条目添加行为监听器事件SportItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {//在八张动物图片中随机挑选一张Random r = new Random();int temp = r.nextInt(10)+1;start = "D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\sport\\sport"+temp+"\\";step = 0;initData();initImage();}});JMenuItem AnimalItem = new JMenuItem("动物");//给动物条目添加行为监听器AnimalItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {//在八张动物图片中随机挑选一张Random r = new Random();int temp = r.nextInt(8)+1;start = "D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\animal\\animal"+temp+"\\";step = 0;initData();initImage();}});// 给重新开始绑定一个行为监听器replayItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {initData();step = 0;initImage();}});JMenuItem reLoginjMenuItem = new JMenuItem("重新登录");//给重新登录绑定行为事件reLoginjMenuItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {GameJFrame.this.setVisible(false);LoginJFrame loginFrame = new LoginJFrame();}});JMenuItem closeItem = new JMenuItem("关闭游戏");// 给关闭游戏绑定行为监听器closeItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.exit(0);}});JMenuItem accountItem = new JMenuItem("公众号");//给公众号绑定行为事件accountItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {//添加一个弹框对象JDialog jDialog = new JDialog();//创建一个管理图片的容器对象JLabel jLabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\about.png"));//设置图片管理容器的大小jLabel.setBounds(0,0,258,258);//把容器添加到弹框中jDialog.add(jLabel);//设置弹框大小jDialog.setSize(344,344);//让弹框总是置顶 就是显示在最上层jDialog.setAlwaysOnTop(true);//让弹框居中jDialog.setLocationRelativeTo(null);//弹框不关闭 无法操作小面的界面jDialog.setModal(true);// 让弹框显示jDialog.setVisible(true);}});//将条目添加到项目中changepictureJMeun.add(SportItem);changepictureJMeun.add(AnimalItem);functionJMenu.add(changepictureJMeun);functionJMenu.add(reLoginjMenuItem);functionJMenu.add(replayItem);functionJMenu.add(closeItem);aboubtJMenu.add(accountItem);//将项目添加到菜单中jMenuBar.add(functionJMenu);jMenuBar.add(aboubtJMenu);// 设置整个菜单界面this.setJMenuBar(jMenuBar);}// private void initData(){
// int[] arr = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
//
// Random r = new Random();
// for (int i = 0; i < arr.length; i++) {
// int index = r.nextInt(arr.length);
// int temp = arr[i];
// arr[i] = arr[index];
// arr[index] = temp;
// }
//
// int cnt = 0;
// for(int i = 0;i < 4;i++){
// for(int j = 0;j < 4;j++){
// if(arr[cnt] == 0){
// x = cnt % 4;
// y = cnt / 4;
// }
// data[i][j] = arr[cnt++];
// }
// }
//
// }private void initData(){int[][] arr = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,0}};x = 3;y = 3;Random r = new Random();for(int i = 0;i < 1000;i++){int num = r.nextInt(4);if(num == 0 && check(x-1,y)){//向左int temp = arr[x][y];arr[x][y] = arr[x-1][y];arr[x-1][y] = temp;x--;}else if(num == 1 && check(x,y-1)){//向上int temp = arr[x][y];arr[x][y] = arr[x][y-1];arr[x][y-1] = temp;y--;}else if(num == 2 && check(x+1,y)){//向右int temp = arr[x][y];arr[x][y] = arr[x+1][y];arr[x+1][y] = temp;x++;}else if(num == 3 && check(x,y+1)){//向下int temp = arr[x][y];arr[x][y] = arr[x][y+1];arr[x][y+1] = temp;y++;}}int temp = x;x = y;y = temp;data = arr;}private void initImage(){//先加载的图片会在最上面 所以如果要交换图片的话要把所有的图片清空重新加载this.getContentPane().removeAll();//添加计步的功能JLabel StepJlabel = new JLabel("步数:"+this.step);StepJlabel.setBounds(50,30,100,20);this.getContentPane().add(StepJlabel);if(checkIsVictory()){JLabel winJlabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\win.png"));winJlabel.setBounds(83+105*1,132+105*3,197,73);this.getContentPane().add(winJlabel);}String end = ".jpg";int number = 0;for(int h = 0;h < 105*4;h+=105){for(int w = 0;w < 105*4;w += 105){String path = start + data[number/4][number%4] + end;//创建图片对象ImageIcon icon = new ImageIcon(path); // 如果没有这个路径 会默认添加一个空白图片// 创建JLable对象 (管理容器) 默认是把图片放在界面的中间JLabel jLabel = new JLabel(icon);jLabel.setBounds(w+83,h+134,105,105);//给图片添加边框 0代表凸出来 1代表陷进去的jLabel.setBorder(new BevelBorder(1));//把管理容器添加到主界面中this.getContentPane().add(jLabel); // 如果把JFrame看成一个相框的外框和和玻璃 那getContentPane就是里面放照片的地板 组件(JLabel等):贴在底板上的照片number++;}}//添加背景图ImageIcon backGround = new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\background.png");JLabel jlabel1 = new JLabel(backGround);jlabel1.setBounds(38,40,508,560);this.getContentPane().add(jlabel1);//刷新一下界面this.getContentPane().repaint();}private void getCompletedImage(){this.getContentPane().removeAll();String path = start + "all.jpg";ImageIcon icon = new ImageIcon(path);JLabel jlabel = new JLabel(icon);jlabel.setBounds(83,132,420,420);this.getContentPane().add(jlabel);ImageIcon backGround = new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\background.png");JLabel jlabel1 = new JLabel(backGround);jlabel1.setBounds(38,40,508,560);this.getContentPane().add(jlabel1);this.getContentPane().repaint();}public void victory(){this.getContentPane().removeAll();int cnt = 1;for(int i = 0;i < 4;i++){for(int j = 0;j < 4;j++){String path = start + cnt + ".jpg";ImageIcon icon = new ImageIcon(path);JLabel jlabel = new JLabel(icon);jlabel.setBorder(new BevelBorder(1));jlabel.setBounds(83+j*105,132+i*105,105,105);this.getContentPane().add(jlabel);data[i][j] = cnt++;}}x = 3;y = 3;//添加背景框ImageIcon icon = new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\background.png");JLabel jlabel = new JLabel(icon);jlabel.setBounds(38,40,508,560);this.getContentPane().add(jlabel);this.getContentPane().repaint();}//判断是否胜利public boolean checkIsVictory(){int cnt = 1;for(int i = 0;i < 4;i++){for(int j = 0; j < 4;j++){if(cnt == 16) return true;if(data[i][j] != cnt++) return false;}}return true;}//检查移动是否越界public boolean check(int x,int y){return x >= 0 && x < 4 && y >= 0 && y < 4;}@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {int code = e.getKeyCode();if((char)code == 'A'){getCompletedImage();}}@Overridepublic void keyReleased(KeyEvent e) {int code = e.getKeyCode();if(code == 37 && check(x-1,y)){//左step++;int temp = data[y][x];data[y][x] = data[y][x-1];data[y][x-1] = temp;x--;initImage();System.out.println("向左移动一格");}else if(code == 38 && check(x,y-1)){//上step++;int temp = data[y-1][x];data[y-1][x] = data[y][x];data[y][x] = temp;y--;initImage();System.out.println("向上移动一格");}else if(code == 39 && check(x+1,y)){//右step++;int temp = data[y][x];data[y][x] = data[y][x+1];data[y][x+1] = temp;x++;initImage();System.out.println("向右移动一格");}else if(code == 40 && check(x,y+1)){//下step++;int temp = data[y+1][x];data[y+1][x] = data[y][x];data[y][x] = temp;y++;initImage();System.out.println("向下移动一格");}else if((char)code == 'A'){initImage();}else if((char)code == 'W'){data = win;x = 3;y = 3;initImage();}}
}//快捷键的使用
// 快速双击单词 按住Ctrl+</>键
// 能跳转到单词的末尾或者开头
// 按Ctrl+w 能选中这个单词
// 第一次按是选中这个单词 第二次是选中整个表达式 第三次是整个语句 第四次是整个代码块 是逐渐扩大范围
LoginJFrame
package demo;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import demo.User;public class LoginJFrame extends JFrame implements MouseListener{//创建一个用户ArrayList<User> users = new ArrayList<>();//绑定登录按钮JButton loginJButton = new JButton("登录");//绑定注册按钮JButton registerJButton = new JButton("注册");//绑定验证码按钮String IdentifyCode = Tool.getIdentifyCode();JButton IdentifyCodeJButton = new JButton(IdentifyCode);//添加用户名输入框JTextField userJtextfield = new JTextField();//添加用户名输入框JTextField passwordJtextfield = new JTextField();// 添加验证码输入框JTextField IdentifyJtextfield = new JTextField();LoginJFrame(){users.add(new User("zhangsan","123456"));users.add(new User("lishi","123456"));//初始化界面init();//设置图片initImage();//显示界面this.setVisible(true);}//初始化界面public void init(){this.setSize(488,430);//设置标题this.setTitle("拼图 登录");// 设置界面置顶this.setAlwaysOnTop(true);//设置界面居中this.setLocationRelativeTo(null);//设置页面关闭模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 参数是一个接口中的一个常量 这个是3 代表的是如果有多个窗口 只要关闭 程序就终止this.setLayout(null);}public void initImage(){//添加用户名文字JLabel userJlabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\用户名.png"));userJlabel.setBounds(116,135,51,19);this.add(userJlabel);//添加密码文字JLabel PasswordJlabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\密码.png"));PasswordJlabel.setBounds(130,195,35,18);this.add(PasswordJlabel);//添加验证码JLabel IdentifyJlabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\验证码.png"));IdentifyJlabel.setBounds(116,250,56,21);this.add(IdentifyJlabel);userJtextfield.setBounds(195,134,200,30);this.add(userJtextfield);passwordJtextfield.setBounds(195,195,200,30);this.add(passwordJtextfield);IdentifyJtextfield.setBounds(195,250,200,30);this.add(IdentifyJtextfield);loginJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\登录按钮.png"));loginJButton.setBounds(133,310,100,40);//给按钮添加鼠标监听器loginJButton.addMouseListener(this);this.add(loginJButton);registerJButton.setBounds(256,310,100,40);registerJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\注册按钮.png"));//给按钮添加鼠标监听器registerJButton.addMouseListener(this);this.add(registerJButton);//给验证码按钮添加鼠标监听器事件 去掉默认的背景IdentifyCodeJButton.setOpaque(false); // 设置不透明为falseIdentifyCodeJButton.setContentAreaFilled(false); // 设置内容区域不填充IdentifyCodeJButton.setBorderPainted(false); //去掉边框IdentifyCodeJButton.setBounds(380,250,80,30);IdentifyCodeJButton.addMouseListener(this);this.add(IdentifyCodeJButton);JLabel backgroundJlabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\background.png"));backgroundJlabel.setBounds(0,0,470,390);this.getContentPane().add(backgroundJlabel);}public void getJDialog(String text){JDialog jDialog = new JDialog();//创建一个管理图片的容器对象JLabel jLabel = new JLabel(text);//设置图片管理容器的大小jLabel.setBounds(0,0,200,100);//把容器添加到弹框中jDialog.add(jLabel);//设置弹框大小jDialog.setSize(200,100);//让弹框总是置顶 就是显示在最上层jDialog.setAlwaysOnTop(true);//让弹框居中jDialog.setLocationRelativeTo(null);//弹框不关闭 无法操作小面的界面jDialog.setModal(true);// 让弹框显示jDialog.setVisible(true);}@Overridepublic void mouseClicked(MouseEvent e) {}@Overridepublic void mousePressed(MouseEvent e) {Object o = e.getSource();if(o == loginJButton){//显示深色的图片loginJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\登录按下.png"));}else if(o == registerJButton){registerJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\注册按下.png"));}}@Overridepublic void mouseReleased(MouseEvent e) {Object o = e.getSource();if(o == loginJButton){String userName = userJtextfield.getText();String userPassword = passwordJtextfield.getText();String Identify = IdentifyJtextfield.getText();if(!Identify.equals(IdentifyCode)){loginJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\登录按钮.png"));getJDialog("验证码错误");return;}for (int i = 0; i < users.size(); i++) {User user = users.get(i);if(user.getName().equals(userName) && user.getPassword().equals(userPassword)){System.out.println("登录成功");this.setVisible(false);GameJFrame gameFrame = new GameJFrame();return;}}loginJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\登录按钮.png"));getJDialog("密码或者账号错误,登录失败");}else if(o == IdentifyCodeJButton){IdentifyCode = Tool.getIdentifyCode();IdentifyCodeJButton.setText(IdentifyCode);}else if(o == registerJButton){this.setVisible(false);new RegisterJFrame(this);registerJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\注册按钮.png"));}}@Overridepublic void mouseEntered(MouseEvent e) {}@Overridepublic void mouseExited(MouseEvent e) {}
}
RegisterJFrame
package demo;
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;public class RegisterJFrame extends JFrame implements MouseListener{LoginJFrame loginJFrame;//绑定登录按钮JButton registerJButton = new JButton("注册");//绑定注册按钮JButton resetJButton = new JButton("重置");//添加注册用户名输入框JTextField registerUserJtextfield = new JTextField();//添加注册密码输入框JTextField registerPasswordJtextfield = new JTextField();// 添加再次输入密码输入框JTextField repasswordJtextfield = new JTextField();RegisterJFrame(LoginJFrame loginJFrame){this.loginJFrame = loginJFrame;//初始化界面init();//设置图片initImage();//显示界面this.setVisible(true);}//初始化界面public void init(){this.setSize(488,430);//设置标题this.setTitle("拼图 登录");// 设置界面置顶this.setAlwaysOnTop(true);//设置界面居中this.setLocationRelativeTo(null);//设置页面关闭模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 参数是一个接口中的一个常量 这个是3 代表的是如果有多个窗口 只要关闭 程序就终止this.setLayout(null);}public void initImage(){//添加用户名文字JLabel registerUserJLabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\注册用户名.png"));registerUserJLabel.setBounds(106,138,79,17);this.add(registerUserJLabel);//添加密码文字JLabel registerPasswordJLabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\注册密码.png"));registerPasswordJLabel.setBounds(115,198,64,16);this.add(registerPasswordJLabel);//添加验证码JLabel IdentifyJlabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\再次输入密码.png"));IdentifyJlabel.setBounds(95,255,96,17);this.add(IdentifyJlabel);registerUserJtextfield.setBounds(195,134,200,30);this.add(registerUserJtextfield);registerPasswordJtextfield.setBounds(195,195,200,30);this.add(registerPasswordJtextfield);repasswordJtextfield.setBounds(195,250,200,30);this.add(repasswordJtextfield);registerJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\注册按钮.png"));registerJButton.setBounds(133,310,100,40);//给按钮添加鼠标监听器registerJButton.addMouseListener(this);this.add(registerJButton);resetJButton.setBounds(256,310,100,40);resetJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\重置按钮.png"));//给按钮添加鼠标监听器resetJButton.addMouseListener(this);this.add(resetJButton);JLabel backgroundJlabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\background.png"));backgroundJlabel.setBounds(0,0,470,390);this.getContentPane().add(backgroundJlabel);}public void getJDialog(String text){JDialog jDialog = new JDialog();//创建一个管理图片的容器对象JLabel jLabel = new JLabel(text);//设置图片管理容器的大小jLabel.setBounds(0,0,200,100);//把容器添加到弹框中jDialog.add(jLabel);//设置弹框大小jDialog.setSize(200,100);//让弹框总是置顶 就是显示在最上层jDialog.setAlwaysOnTop(true);//让弹框居中jDialog.setLocationRelativeTo(null);//弹框不关闭 无法操作小面的界面jDialog.setModal(true);// 让弹框显示jDialog.setVisible(true);}@Overridepublic void mouseClicked(MouseEvent e) {}@Overridepublic void mousePressed(MouseEvent e) {Object o = e.getSource();if(o == registerJButton){//显示深色的图片registerJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\注册按下.png"));}else if(o == resetJButton){resetJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\重置按下.png"));}}@Overridepublic void mouseReleased(MouseEvent e) {Object o = e.getSource();if(o == registerJButton){String userName = registerUserJtextfield.getText();String userPassword = registerPasswordJtextfield.getText();String reSet = repasswordJtextfield.getText();if(!reSet.equals(userPassword)){getJDialog("两次密码不一致");registerJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\注册按钮.png"));return;}if(userName.equals("")){getJDialog("用户名为空");registerJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\注册按钮.png"));return;}for (int i = 0; i < loginJFrame.users.size(); i++) {User temp = loginJFrame.users.get(i);if(temp.getName().equals(userName)){getJDialog("用户已存在");registerJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\注册按钮.png"));return;}}//注册成功 就添加用户User new_User = new User(userName,userPassword);loginJFrame.users.add(new_User);getJDialog("注册成功");loginJFrame.setVisible(true);this.setVisible(false);}else if(o == resetJButton){registerUserJtextfield.setText("");registerPasswordJtextfield.setText("");repasswordJtextfield.setText("");resetJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\重置按钮.png"));}}@Overridepublic void mouseEntered(MouseEvent e) {}@Overridepublic void mouseExited(MouseEvent e) {}
}
Tool
package demo;import java.util.Random;public class Tool {private Tool(){};//得到一个五位随机验证码public static String getIdentifyCode(){char[] arr = new char[5];//随机生成一个0-9的数字Random r = new Random();arr[0] = (char) ('0' + r.nextInt(10));//生成四个英文字母for(int i = 1;i < 5;i++){int temp = r.nextInt(52);if(temp < 26){arr[i] = (char)('a'+temp);}else{arr[i] = (char)('A'+temp-26);}}for (int i = 0; i < arr.length; i++) {int temp = r.nextInt(arr.length);char ch = arr[temp];arr[temp] = arr[i];arr[i] = ch;}return new String(arr);}// public static void main(String[] args) {
// System.out.println(Tool.getIdentifyCode());
// }
}
User
package demo;public class User {private String name;private String password;public User() {}public User(String name, String password) {this.name = name;this.password = password;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}