Java实训 第五天
在昨天的基础上,今天完善了注册窗口,并编写好了设置学校信息窗口、修改用户密码窗口、浏览学生记录窗口
一、注册窗口
/*
功能:注册窗口
作者:宋云鹏
时间:2019年6月20日15:35:57
*/
package net.syp.student.gui;
import net.syp.student.app.Application;
import net.syp.student.bean.User;
import net.syp.student.service.Impl.UserServiceImpl;
import net.syp.student.service.UserService;
import javax.swing.;
import java.awt.;
import java.awt.event.*;
import java.sql.Timestamp;
import java.util.Date;
public class RegisterFram extends JFrame {
//标签
private JLabel lblUsername;
private JLabel lblPassword;
private JLabel lblTelephone;
//文本框
private JTextField txtUsername;
private JTextField txtTelephone;
private JPasswordField txtPassword;
//按钮
private JButton btnSubmit;
private JButton btnCancel;
private JButton btnLogin;
//面板
private JPanel panel;
private JPanel panel1;
private JPanel panel2;
private JPanel panel3;
private JPanel panel4;
private String username; private String password; private String telephone; private Date registerTime; //构造方法 public RegisterFram(String title){ super(title); initGUI(); } //初始化图形用户界面 private void initGUI() { //创建组件(面板与控件) panel = (JPanel) getContentPane(); panel1 = new JPanel(); panel2 = new JPanel(); panel3 = new JPanel(); panel4 = new JPanel(); lblUsername = new JLabel("用户名:"); lblPassword = new JLabel("密 码:"); lblTelephone = new JLabel("电 话:"); txtUsername = new JTextField("",15); txtPassword = new JPasswordField("",15); txtTelephone = new JTextField("",15); btnSubmit = new JButton("确定[O]"); btnCancel = new JButton("取消[C]"); btnLogin = new JButton("登录[L]"); //将控件添加到四个小面板 panel1.add(lblUsername); panel1.add(txtUsername); panel2.add(lblPassword); panel2.add(txtPassword); panel3.add(lblTelephone); panel3.add(txtTelephone); panel4.add(btnSubmit); panel4.add(btnCancel); panel4.add(btnLogin); //设置大面板布局,将四个小面板添加到大面板 panel.setLayout(new GridLayout(4,1)); panel.add(panel1); panel.add(panel2); panel.add(panel3); panel.add(panel4); //设置窗口尺寸 setSize(300,200); //设置窗口不可调整大小 setResizable(false); //设置窗口可见 setVisible(true); //设置窗口屏幕居中 setLocationRelativeTo(null); //设置窗口标题 setTitle("用户注册"); //注册窗口监听器,继承窗口适配器,编写事件处理方法 addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { dispose(); //让登陆窗口可见 Application.loginFram.setVisible(true); } }); //【提交】按钮单击事件处理 btnSubmit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { register(); } }); //【提交】按钮单击事件处理 btnSubmit.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER);{ register(); } } }); //【取消】按钮单击事件 btnCancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //显示登录窗口 Application.loginFram.setVisible(true); //卸载当前窗口 dispose(); } }); //【登录】按钮单击事件 btnLogin.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Application.loginFram.setVisible(true); dispose(); } }); //【用户名】文本框按键事件处理 txtUsername.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER){ txtPassword.requestFocus(); } } }); //【密码】文本框按键事件处理 txtPassword.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == 10){ txtTelephone.requestFocus(); } } }); } private void register(){ //获取用户名、密码、电话 username = txtUsername.getText().trim(); password = new String(txtPassword.getPassword()); telephone = txtTelephone.getText().trim(); //定义当前时间为注册时间 registerTime = new Timestamp(System.currentTimeMillis()); UserService userService = new UserServiceImpl(); //创建用户 User user = new User(); user.setUsername(username); user.setPassword(password); user.setTelephone(telephone); user.setRegisterTime(registerTime); //添加用户 int count = userService.addUser(user); //判断是否成功 if (count > 0){ setVisible(false); JOptionPane.showMessageDialog(null,"恭喜!注册成功!","学生信息管理系统",JOptionPane.INFORMATION_MESSAGE); setVisible(true); }else { JOptionPane.showMessageDialog(null,"遗憾!注册失败!","学生信息管理系统",JOptionPane.INFORMATION_MESSAGE); } } //主方法 public static void main(String[] args) { Application.registerFram = new RegisterFram(""); }
}
二、设置学校信息窗口
/*
功能:设置学校信息
作者:宋云鹏
时间:2019年6月21日08:47:38
*/
package net.syp.student.gui;
import net.syp.student.bean.College;
import net.syp.student.service.CollegeService;
import net.syp.student.service.Impl.CollegeServiceImpl;
import javax.swing.;
import java.awt.;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class SetCollegeInfoFrame extends JFrame {
//面板
JPanel panel;
JPanel pnlNorth;
JPanel panel1;
JPanel panel2;
JPanel panel3;
JPanel panel4;
JPanel panel5;
JPanel pnlCenter;
JPanel pnlSouth;
//标签
JLabel lblName;
JLabel lblPresident;
JLabel lblStartTime;
JLabel lblTelephone;
JLabel lblEmail;
JLabel lblAddress;
JLabel lblProfile;
//按钮
JButton btnSave;
JButton btnExit;
//文本框与文本区
JTextField txtName;
JTextField txtPresident;
JTextField txtStartTime;
JTextField txtTelephone;
JTextField txtEMail;
JTextField txtAddress;
JTextArea txtProfile;
//滚动面板
JScrollPane scrollPane;
//学校服务
private CollegeService collegeService;
private College college;
private int id = 1;
//构造方法 public SetCollegeInfoFrame(String title){ super(title); initGUI(); } //初始化用户界面 private void initGUI(){ //创建组件(面板与控件) panel = (JPanel) getContentPane(); pnlNorth = new JPanel(); panel1 = new JPanel(); panel2 = new JPanel(); panel3 = new JPanel(); panel4 = new JPanel(); panel5 = new JPanel(); pnlCenter = new JPanel(); pnlSouth = new JPanel(); lblName = new JLabel("学校名称:"); lblPresident = new JLabel("校 长:"); lblStartTime = new JLabel("建校时间:"); lblTelephone = new JLabel("联系电话:"); lblEmail= new JLabel("电子邮箱:"); lblAddress = new JLabel("通讯地址:"); lblProfile = new JLabel("学校简介:"); txtName = new JTextField(30); txtPresident = new JTextField(11); txtStartTime = new JTextField(12); txtTelephone = new JTextField(11); txtEMail = new JTextField(12); txtAddress = new JTextField(30); txtProfile = new JTextArea(5,37); txtProfile.setLineWrap(true);//让文本区自动换行 scrollPane = new JScrollPane(txtProfile,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); btnSave = new JButton("保存[S]"); btnSave.setMnemonic(KeyEvent.VK_S); btnExit = new JButton("退出[X]"); btnExit.setMnemonic(KeyEvent.VK_X); //设置大面板布局,将被面板、中面板与南面板添加到大面板 panel.setLayout(new BorderLayout()); panel.add(pnlNorth,"North"); panel.add(pnlCenter,"Center"); panel.add(pnlSouth,"South"); //设置北面板布局,添加五个小面板 pnlNorth.setLayout(new GridLayout(5,1)); pnlNorth 1ef05 .add(panel1); pnlNorth.add(panel2); pnlNorth.add(panel3); pnlNorth.add(panel4); pnlNorth.add(panel5); //将控件添加到五个面板 panel1.add(lblName); panel1.add(txtName); panel2.add(lblPresident); panel2.add(txtPresident); panel2.add(lblStartTime); panel2.add(txtStartTime); panel3.add(lblTelephone); panel3.add(txtTelephone); panel3.add(lblEmail); panel3.add(txtEMail); panel4.add(lblAddress); panel4.add(txtAddress); panel5.add(lblProfile); //将滚动面板添加到中面板 pnlCenter.add(scrollPane); //将两个按钮添加到南面板 pnlSouth.add(btnSave); pnlSouth.add(btnExit); //创建学校服务对象 collegeService = new CollegeServiceImpl(); //获取学校对象 college = collegeService.findCollegeById(id); //利用学校对象属性值设置相应控件的内容 txtName.setText(college.getName()); txtPresident.setText(college.getPresident()); txtStartTime.setText(college.getStartTime().toString()); txtTelephone.setText(college.getTelephone()); txtEMail.setText(college.getEmail()); txtAddress.setText(college.getAddress()); txtProfile.setText(college.getProfile()); //设置窗口 setSize(450,350); setLocationRelativeTo(null); setResizable(false); pack(); setTitle("设置学校信息"); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //【关闭】按钮单击事件处理 btnExit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dispose(); } }); //【保存】按钮单击事件处理 btnSave.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { //修改学校属性 college.setName(txtName.getText()); college.setPresident(txtPresident.getText()); college.setStartTime(new Timestamp(new SimpleDateFormat("yyyy-MM-dd").parse(txtStartTime.getText().toString()).getTime())); college.setTelephone(txtTelephone.getText()); college.setEmail(txtEMail.getText()); college.setAddress(txtAddress.getText()); college.setProfile(txtProfile.getText()); //更新学校信息 collegeService.updateStatus(college); //提示用户更新成功 JOptionPane.showMessageDialog(null,"更新数据成功"); } catch (ParseException e1) { JOptionPane.showMessageDialog(null,"更新数据失败"); } } }); } //主方法 public static void main(String[] args) { new SetCollegeInfoFrame(""); }
}
三、修改用户密码窗口
/*
功能:修改用户密码
作者:宋云鹏
时间:2019年6月21日09:48:26
*/
package net.syp.student.gui;
import net.syp.student.app.Application;
import net.syp.student.bean.User;
import net.syp.student.service.Impl.UserServiceImpl;
import net.syp.student.service.UserService;
import javax.swing.;
import java.awt.;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class ChangePasswordFrame extends JFrame {
//面板
private JPanel panel;
private JPanel pnlRow1;
private JPanel pnlRow2;
private JPanel pnlRow3;
private JPanel pnlRow4;
private JPanel pnlRow5;
//标签 private JLabel lblUsername; private JLabel lblPassword; private JLabel lblNewPassword1; private JLabel lblNewPassword2; //文本框 private JTextField txtUsername; private JPasswordField txtPassword; private JPasswordField txtNewPassword1; private JPasswordField txtNewPassword2; //按钮 private JButton btnOK; private JButton btnCancel; //用户服务对象 private UserService userService; //构造方法 public ChangePasswordFrame(String title){ super(title); initGUI(); } //初始化用户界面 private void initGUI(){ //创建组件(面板与控件) panel = (JPanel) getContentPane(); pnlRow1 = new JPanel(); pnlRow2 = new JPanel(); pnlRow3 = new JPanel(); pnlRow4 = new JPanel(); pnlRow5 = new JPanel(); lblUsername = new JLabel("用户名:"); lblPassword = new JLabel("密 码:"); lblNewPassword1 = new JLabel("新密码:"); lblNewPassword2 = new JLabel("确 认:"); txtUsername = new JTextField(20); txtUsername.setEnabled(false); txtPassword = new JPasswordField(20); txtNewPassword1 = new JPasswordField(20); txtNewPassword2 = new JPasswordField(20); btnOK = new JButton("确定[O]"); btnOK.setMnemonic(KeyEvent.VK_O); btnCancel = new JButton("取消[C]"); btnCancel.setMnemonic(KeyEvent.VK_C); //设置大面板布局,添加五个小面板 panel.setLayout(new GridLayout(5,1)); panel.add(pnlRow1); panel.add(pnlRow2); panel.add(pnlRow3); panel.add(pnlRow4); panel.add(pnlRow5); //将控件添加到五个小面板 pnlRow1.add(lblUsername); pnlRow1.add(txtUsername); pnlRow2.add(lblPassword); pnlRow2.add(txtPassword); pnlRow3.add(lblNewPassword1); pnlRow3.add(txtNewPassword1); pnlRow4.add(lblNewPassword2); pnlRow4.add(txtNewPassword2); pnlRow5.add(btnOK); pnlRow5.add(btnCancel); //设置窗口 setResizable(false); pack(); setLocationRelativeTo(null); setTitle("修改用户密码"); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置控件属性 txtUsername.setEditable(false); txtUsername.setText(Application.username); //【取消】按钮单击事件处理 btnCancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dispose(); } }); //【确定】按钮单击事件处理 btnOK.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { changePassword(); } }); //【确认】按钮按键事件处理 btnOK.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == 10){ changePassword(); } } }); //【密码】文本框处理事件处理 txtPassword.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER){ txtNewPassword1.requestFocus(); } } }); //【新密码1】文本框处理事件处理 txtPassword.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER){ txtNewPassword2.requestFocus(); } } }); //【新密码2】文本框处理事件处理 txtPassword.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER){ btnOK.requestFocus(); } } }); } //修改密码方法 private void changePassword(){ //获取用户信息 int id = Application.id; String username = Application.username; //保存用户输入的旧密码与两个新密码 String password = new String(txtPassword.getPassword()); String newPassword1 = new String(txtNewPassword1.getPassword()); String newPassword2 = new String(txtNewPassword2.getPassword()); //创建学生服务对象 userService = new UserServiceImpl(); if (userService.login(username,password) == null){ JOptionPane.showMessageDialog(null,"旧密码错误,请重新输入","错误提示",JOptionPane.ERROR_MESSAGE); txtPassword.requestFocus(); txtPassword.selectAll(); }else if (newPassword1.equals("")){ JOptionPane.showMessageDialog(null,"新密码不能为空","错误提示",JOptionPane.ERROR_MESSAGE); txtNewPassword1.requestFocus(); }else if (newPassword2.equals("")){ JOptionPane.showMessageDialog(null,"确认密码不能为空","错误提示",JOptionPane.ERROR_MESSAGE); txtNewPassword2.requestFocus(); }else if (!newPassword1.equals(newPassword2)){ JOptionPane.showMessageDialog(null,"两次密码不一致","错误提示",JOptionPane.ERROR_MESSAGE); }else { User user = userService.findUserById(id); user.setPassword(newPassword1); int count = userService.updateUser(user); if (count > 0){ JOptionPane.showMessageDialog(null,"密码修改成功","设置密码",JOptionPane.INFORMATION_MESSAGE); dispose(); }else { JOptionPane.showMessageDialog(null,"密码修改失败","修改密码",JOptionPane.WARNING_MESSAGE); } } } //主方法 public static void main(String[] args) { Application.id = 1; Application.username = "李刚"; new ChangePasswordFrame(""); }
}
四、浏览学生记录窗口
功能:浏览学生记录
作者:宋云鹏
时间:2019年6月21日11:25:46
*/
package net.syp.student.gui;
import net.syp.student.bean.Student;
import net.syp.student.service.Impl.StudentServiceImpl;
import net.syp.student.service.StudentService;
import javax.swing.;
import java.awt.;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.util.List;
public class BrowseStudentsFrame extends JFrame {
//声明面板
private JPanel panel,pnlCenter,pnlRow1,pnlRow2,pnlRow3,pnlRow4,pnlRow5,pnlRow6,pnlRow7,pnlSouth;
//声明标签
private JLabel lblId,lblName,lblSex,lblAge,lblDepartment,lblClass,lblTelephone;
//声明文本框
private JTextField txtId,txtName,txtSex,txtAge,txtDepartment,txtClass,txtTelephone;
//声明按钮
private JButton btnTop,btnPrevious,btnNext,btnBottom,btnExit;
//当前记录行号 private int currentRow; //学生列表 private List<Student> students; //创建学生服务对象 StudentService studentService; //构造方法 public BrowseStudentsFrame(String title){ super(title); initGUI(); } //初始化用户界面 private void initGUI(){ //创建组件 panel = (JPanel) getContentPane(); pnlCenter = new JPanel(); pnlSouth = new JPanel(); pnlRow1 = new JPanel(); pnlRow2 = new JPanel(); pnlRow3 = new JPanel(); pnlRow4 = new JPanel(); pnlRow5 = new JPanel(); pnlRow6 = new JPanel(); pnlRow7 = new JPanel(); pnlRow1.setLayout(new FlowLayout(FlowLayout.LEFT)); pnlRow2.setLayout(new FlowLayout(FlowLayout.LEFT)); pnlRow3.setLayout(new FlowLayout(FlowLayout.LEFT)); pnlRow4.setLayout(new FlowLayout(FlowLayout.LEFT)); pnlRow5.setLayout(new FlowLayout(FlowLayout.LEFT)); pnlRow6.setLayout(new FlowLayout(FlowLayout.LEFT)); pnlRow7.setLayout(new FlowLayout(FlowLayout.LEFT)); lblId = new JLabel("学号:"); lblName = new JLabel("姓名:"); lblSex = new JLabel("性别:"); lblAge = new JLabel("年龄:"); lblDepartment = new JLabel("系部:"); lblClass = new JLabel("班级:"); lblTelephone = new JLabel("电话:"); txtId = new JTextField(40); txtName = new JTextField(40); txtSex = new JTextField(40); txtAge = new JTextField(40); txtDepartment = new JTextField(40); txtClass = new JTextField(40); txtTelephone = new JTextField(40); txtId.setEditable(false); txtName.setEditable(false); txtSex.setEditable(false); txtAge.setEditable(false); txtDepartment.setEditable(false); txtClass.setEditable(false); txtTelephone.setEditable(false); btnTop = new JButton("第一条[T]"); btnPrevious = new JButton("上一条[p]}"); btnNext = new JButton("下一条 "); btnBottom = new JButton("最后一条[B]"); btnExit = new JButton("退出[X]"); btnTop.setMnemonic(KeyEvent.VK_T); btnPrevious.setMnemonic(KeyEvent.VK_P); btnNext.setMnemonic(KeyEvent.VK_N); btnBottom.setMnemonic(KeyEvent.VK_B); btnExit.setMnemonic(KeyEvent.VK_X); // 添加组件 panel.setLayout(new BorderLayout()); panel.add(pnlCenter, BorderLayout.CENTER); panel.add(pnlSouth, BorderLayout.SOUTH); pnlCenter.setLayout(new GridLayout(7, 1)); pnlCenter.add(pnlRow1); pnlCenter.add(pnlRow2); pnlCenter.add(pnlRow3); pnlCenter.add(pnlRow4); pnlCenter.add(pnlRow5); pnlCenter.add(pnlRow6); pnlCenter.add(pnlRow7); pnlRow1.add(lblId); pnlRow1.add(txtId); pnlRow2.add(lblName); pnlRow2.add(txtName); pnlRow3.add(lblSex); pnlRow3.add(txtSex); pnlRow4.add(lblAge); pnlRow4.add(txtAge); pnlRow5.add(lblDepartment); pnlRow5.add(txtDepartment); pnlRow6.add(lblClass); pnlRow6.add(txtClass); pnlRow7.add(lblTelephone); pnlRow7.add(txtTelephone); pnlSouth.add(btnTop); pnlSouth.add(btnPrevious); pnlSouth.add(btnNext); pnlSouth.add(btnBottom); pnlSouth.add(btnExit); //设置面板 setSize(500,300); setVisible(true); pack(); setResizable(false); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //创建学生服务对象 studentService = new StudentServiceImpl(); //获取全部学生列表、 students = studentService.findAllStudents(); //判断是否有学生记录 if (students.size() > 0){ currentRow = 1; setTitle("浏览学生表记录" + "&& 当前记录:" + currentRow); fillFrameData(currentRow); }else { JOptionPane.showMessageDialog(null, "表中没有记录!", "浏览学生表记录", JOptionPane.ERROR_MESSAGE); btnTop.setEnabled(false); btnPrevious.setEnabled(false); btnNext.setEnabled(false); btnBottom.setEnabled(false); } //【第一条】按钮单击事件 btnTop.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { currentRow = 1; fillFrameData(currentRow); } }); //【上一条】按钮单击事件 btnPrevious.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (currentRow > 1){ //设置当前记录号 currentRow--; fillFrameData(currentRow); }else { JOptionPane.showMessageDialog(null, "已到第一条记录!", "浏览学生表记录", JOptionPane.WARNING_MESSAGE); } } }); //【下一条】按钮单击事件 btnNext.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (currentRow <students.size()){ //设置当前记录号 currentRow++; fillFrameData(currentRow); }else { JOptionPane.showMessageDialog(null, "已到最后一条记录!", "浏览学生表记录", JOptionPane.WARNING_MESSAGE); } } }); //【最后一条】按钮单击事件 btnBottom.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { currentRow = students.size()-1 ; fillFrameData(currentRow); } }); //【退出】按钮单击事件 btnExit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dispose(); } }); } //将当前记录数据填充窗口各文本框 private void fillFrameData(int currentRow){ if (currentRow > 0){ setTitle("浏览学生表记录" + "&& 当前记录" + currentRow); txtId.setText(students.get(currentRow).getId()); txtName.setText(students.get(currentRow).getName()); txtSex.setText(students.get(currentRow).getSex()); txtAge.setText(students.get(currentRow).getAge() + ""); txtDepartment.setText(students.get(currentRow).getDepartment()); txtClass.setText(students.get(currentRow).getClazz()); txtTelephone.setText(students.get(currentRow).getTelephone()); } } //主方法 public static void main(String[] args) { new BrowseStudentsFrame(""); }
在今天实训的学习中对GUI的设置、布局、按钮更加的清楚与清晰,找到了改如何去写一个GUI界面。其中特别是按钮,在今天书写代码的的过程中,完全处于惊讶的状态,原来一个按钮可以这样用。今天受益最大的就是按钮了,其中浏览学生记录窗口中的按钮编写方法使我进入了一个新的大陆,让我对代码有了更深的理解。
- java实训第五天8/01
- Java实训笔记(七)之mysql篇
- Java学习第五天笔记总结
- Java基础第五天--内部类,包,修饰符
- Java实训 第八天
- java实训第三天7/28
- 澄迈NIIT Android 实训 前3天复习java的基础
- 【学java的第五天】emm
- Java实训第十二天8/09
- Java实训第3天(Java语言基础)
- 精英Java软件工程师实训课程教学特色
- JAVA面试题第五天
- 小仙女Java实训课程07 jdbc servlet
- java第五天
- java实训两个星期的部分经验
- java实训第四节单例模式
- hp实训之Java(一)
- JAVA学习第五天笔记
- 实训java第十二课 时间 日期 Date Calendar DateFormat StringBuffer StringBuilder String正则表达式 包装类
- 嵌入式软件开发培训笔记——java第五天(API——math/string/集合/日期时间以及java线程)