(7)按班级删除学生窗口DeleteStudentsByClass
代码如下:
package net.qt.student.gui;
import net.qt.student.bean.Student;
import net.qt.student.service.StudentService;
import net.qt.student.service.impl.StudentServiceImpl;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.*;
import java.awt.event.*;
import java.util.List;
import java.util.Vector;
/**
* 功能:按班级删除学生记录
* 作者:谯婷
* 日期:2019.6.23
*/
public class DeleteStudentsByClassFrame extends JFrame {
/**
* 班级标签
*/
private JLabel lblInputClass;
/**
* 班级文本框
*/
private JTextField txtClass;
/**
* 面板
*/
private JPanel panel;
private JPanel pnlSouth;
private JPanel pnlCenter;
private JPanel pnlNouth;
/**
* 按钮
*/
private JButton btnQuery;
private JButton btnBrowseAll;
private JButton btnDelete;
private JButton btnExit;
/**
* 记录行集
*/
private Vector rows;
/**
* 表格列标题
*/
private Vector<String> colHead;
/**
* 表格
*/
private JTable table;
/**
* 滚动面板
*/
private JScrollPane scroller;
/**
* 记录当前账号
*/
private int currentRow;
/**
* 学生列表
*/
private List<Student> students;
/**
* 创建学生服务对象
*/
private StudentService studentService;
/**
* 构造方法
* @param title
*/
private DeleteStudentsByClassFrame(String title){
super(title);
initGUI();
}
private void initGUI(){
//创建组件
panel = (JPanel)getContentPane();
pnlNouth = new JPanel( );
pnlCenter = new JPanel( );
pnlSouth = new JPanel( );
rows = new Vector( );
colHead = new Vector( );
lblInputClass = new JLabel( "输入班级:" );
txtClass = new JTextField( 10 );
txtClass.setHorizontalAlignment( JTextField.CENTER );
btnQuery = new JButton( "查询[Q]" );
btnQuery.setMnemonic( KeyEvent.VK_Q );
btnBrowseAll = new JButton( "显示全部记录[A]" );
btnBrowseAll.setMnemonic( KeyEvent.VK_A );
btnDelete = new JButton( "删除查询的记录[D]" );
btnDelete.setEnabled( false );//删除按钮不可用
btnDelete.setMnemonic( KeyEvent.VK_D );
btnExit = new JButton( "退出[X]" );
btnExit.setMnemonic( KeyEvent.VK_X);
//添加组件
panel.add( pnlSouth, BorderLayout.SOUTH );
panel.add( pnlCenter, BorderLayout.CENTER );
panel.add( pnlNouth, BorderLayout.NORTH );
pnlNouth.add( lblInputClass );
pnlNouth.add( txtClass );
pnlNouth.add( btnQuery );
pnlNouth.add( btnBrowseAll );
pnlSouth.setLayout( new FlowLayout( FlowLayout.RIGHT ) );
pnlSouth.add( btnDelete );
pnlSouth.add( btnExit );
pnlCenter.setLayout( new BorderLayout( ) );
//创建标题边框对象
TitledBorder tb = new TitledBorder( "查询结果" );
pnlCenter.setBorder( tb );
//创建学生服务对象
studentService = new StudentServiceImpl();
//获取全部学生列表
students = studentService.findAllStudents();
//填充表格数据
fillTableData();
//设置窗口大小
setSize(600,350);
//设置窗口不可调整大小
setResizable( false );
//设置窗口屏幕居中
setLocationRelativeTo( null );
//设置窗口默认关闭操作
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
//设置窗口可见性
setVisible( true );
//【退出】按钮单击事件
btnExit.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
} );
//【删除】按钮单击事件
btnDelete.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(!rows.isEmpty()){
long choice = JOptionPane.showConfirmDialog( null,"是否要删除记录?" );
if(choice == JOptionPane.OK_OPTION){
//获取待删班级
String clazz = txtClass.getText().trim();
//按班级删除记录
int count =studentService.deleteStudentByClass( clazz );
if(count > 0){
JOptionPane.showMessageDialog( null,"记录删除成功!","提示",JOptionPane.INFORMATION_MESSAGE );
//重新获取全部学生列表
students = studentService.findAllStudents();
//清空待删班级文本框
txtClass.setText( "" );
//填充数据
fillTableData();
//删除按钮不可用
btnDelete.setEnabled(false);
}else {
JOptionPane.showMessageDialog( null,"记录删除失败!","警告",JOptionPane.WARNING_MESSAGE);
}
}
}
}
} );
//【查询】按钮单击事件
btnQuery.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
doQuery();
}
} );
//【显示全部记录】按钮单击事件
btnBrowseAll.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//获取全部学生记录
students = studentService.findAllStudents();
//填充数据表格
fillTableData();
//删除按钮不可用
btnDelete.setEnabled( false );
}
} );
//【班级】文本框按键事件
txtClass.addKeyListener( new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
doQuery();
}
}
} );
//表格单击事件
table.addMouseListener( new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//获取当前行的行数
int row = table.rowAtPoint( e.getPoint() );
//选中鼠标单击的行
table.setRowSelectionInterval( row,row );
//设置文本框内容
txtClass.setText( table.getValueAt( row,5 ).toString() );
}
} );
}
/**
* 查询方法
*/
private void doQuery(){
//获取查询班级
String clazz = txtClass.getText().trim();
if(!clazz.equals("")){
students = studentService.findStudentsByClass( clazz );
if(students.size() > 0){
//让删除按钮可用
btnDelete.setEnabled( true );
}
//填充表格
fillTableData();
}else{
JOptionPane.showMessageDialog( null,"请输入待查班级!","警告",JOptionPane.WARNING_MESSAGE );
txtClass.requestFocus();
}
}
/**
* 填充表格方法
*/
private void fillTableData(){
//填充表头
colHead.clear();
colHead.add( "学号" );
colHead.add( "姓名" );
colHead.add( "性别" );
colHead.add( "年龄" );
colHead.add( "系部" );
colHead.add( "班级" );
colHead.add( "电话" );
//填充表记录
rows.clear();
for (Student student : students){
Vector<String> currentRow = new Vector<String>( );
currentRow.addElement( student.getId() );
currentRow.addElement( student.getName() );
currentRow.addElement( student.getSex() );
currentRow.addElement( student.getAge() +"");
currentRow.addElement( student.getDepartment() );
currentRow.addElement( student.getClazz() );
currentRow.addElement( student.getTelephone() );
//将当前行添加到记录行集
rows.add( currentRow );
}
//创建表格(参数1:记录集;参数2:表头)
table = new JTable( rows,colHead );
//定义滚动面板
scroller = new JScrollPane( table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED );
//将滚动面板添加到中心面板
pnlCenter.add( scroller,BorderLayout.CENTER );
//重绘窗体
repaint( );
//是否有记录行
if(rows.isEmpty()){
JOptionPane.showMessageDialog( this,"没有符合条件的记录!","错误提示",JOptionPane.WARNING_MESSAGE );
txtClass.setText( "" );
}else {
//让滚动条移到最上方
scroller.getVerticalScrollBar().setValue(0);
}
}
public static void main(String[] args) {
new DeleteStudentsByClassFrame( "" );
}
}
运行效果如下:
(8)按班级删除学生窗口DeleteStudentsByClass
运行结果如下:
原来是这里文字设置有误:
更正之后完整代码如下:
package net.qt.student.gui;
import net.qt.student.bean.Student;
import net.qt.student.service.StudentService;
import net.qt.student.service.impl.StudentServiceImpl;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.*;
import java.awt.event.*;
import java.util.List;
import java.util.Vector;
/**
* 功能:按照系部删除学生记录
* 作者:谯婷
*日期:2019.6.23
*/
public class DeleteStudentsByDepartmentFrame extends JFrame {
/**
* 系部标签
*/
private JLabel lblInputDepartment;
/**
* 系部文本框
*/
private JTextField txtDepartment;
/**
* 面板
*/
private JPanel panel;
private JPanel pnlSouth;
private JPanel pnlCenter;
private JPanel pnlNouth;
/**
* 按钮
*/
private JButton btnQuery;
private JButton btnBrowseAll;
private JButton btnDelete;
private JButton btnExit;
/**
* 记录行集
*/
private Vector rows;
/**
* 表格列标题
*/
private Vector<String> colHead;
/**
* 表格
*/
private JTable table;
/**
* 滚动面板
*/
private JScrollPane scroller;
/**
* 记录当前行号
*/
private int currentRow;
/**
* 学生列表
*/
private List<Student> students;
/**
* 创建学生服务对象
*/
private StudentService studentService;
/**
* 构造方法
* @param title
*/
public DeleteStudentsByDepartmentFrame(String title){
super(title);
initGUI();
}
private void initGUI(){
//创建组件
panel = (JPanel)getContentPane();
pnlNouth = new JPanel( );
pnlCenter = new JPanel( );
pnlSouth = new JPanel( );
rows = new Vector();
colHead = new Vector();
lblInputDepartment = new JLabel( "输入系部:" );
txtDepartment = new JTextField( 10 );
txtDepartment.setHorizontalAlignment( JTextField.CENTER );
btnQuery = new JButton( "查询[Q]" );
btnQuery.setMnemonic( KeyEvent.VK_Q );
btnBrowseAll = new JButton( "显示全部记录[A]" );
btnBrowseAll.setMnemonic( KeyEvent.VK_A );
btnDelete = new JButton( "删除全部记录[D]" );
btnDelete.setEnabled( false );//删除按钮不可用
btnDelete.setMnemonic( KeyEvent.VK_D);
btnExit = new JButton( "退出[X]" );
btnExit.setMnemonic(KeyEvent.VK_X);
//添加组件
panel.add( pnlSouth, BorderLayout.SOUTH );
panel.add( pnlCenter, BorderLayout.CENTER);
panel.add( pnlNouth, BorderLayout.NORTH );
pnlNouth.add( lblInputDepartment );
pnlNouth.add( txtDepartment );
pnlNouth.add( btnQuery );
pnlNouth.add( btnBrowseAll );
pnlSouth.setLayout( new FlowLayout( FlowLayout.RIGHT ) );
pnlSouth.add( btnDelete );
pnlSouth.add( btnExit );
pnlCenter.setLayout( new BorderLayout( ) );
//创建标题边框对象
TitledBorder tb = new TitledBorder( "查询结果" );
pnlCenter.setBorder( tb );
//创建学生服务对象
studentService = new StudentServiceImpl();
//获取全部学生列表
students = studentService.findAllStudents();
//填充表格数据
fillTableData();
//设置窗口大小
setSize( 600,350 );
//设置窗口不可调整大小
setResizable( false );
//设置窗口屏幕居中
setLocationRelativeTo( null );
//设置窗口标题
setTitle( "按系部删除学生记录" );
//设置窗口可见
setVisible( true );
//设置窗口默认关闭操作
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
//【退出】按钮单击事件
btnExit.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
} );
//【删除】按钮单击事件
btnDelete.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(!rows.isEmpty()){
long choice = JOptionPane.showConfirmDialog( null,"是否要删除记录?" );
if(choice == JOptionPane.OK_OPTION){
//获取待删系部
String department = txtDepartment.getText().trim();
//按系部删除学生
int count = studentService.deleteStudentByDepartment( department );
if(count > 0){
JOptionPane.showMessageDialog( null,"记录删除成功!","提示",JOptionPane.INFORMATION_MESSAGE );
//重新获取全部学生列表
students = studentService.findAllStudents();
//清空待删班级文本框
txtDepartment.setText("");
//填充数据
fillTableData();
//删除按钮不可用
btnDelete.setEnabled( false );
}else{
JOptionPane.showMessageDialog( null,"记录删除失败!","警告",JOptionPane.WARNING_MESSAGE );
}
}
}
}
} );
//【查询】按钮单击事件
btnQuery.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
doQuery();
}
} );
//【显示全部记录】按钮单击事件
btnBrowseAll.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//获取全部学生记录
students = studentService.findAllStudents();
//填充表格数据
fillTableData();
//删除按钮不可用
btnDelete.setEnabled( false );
}
} );
//【系部】文本框按键事件
txtDepartment.addKeyListener( new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
doQuery();
}
}
} );
//表格单击事件
table.addMouseListener( new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//获取当前行的行数
int row = table.rowAtPoint( e.getPoint() );
//选中鼠标单击的行
table.setRowSelectionInterval( row,row );
//设置文本框的内容
txtDepartment.setText( table.getValueAt( row,4 ).toString() );
}
} );
}
/**
* 查询方法
*/
private void doQuery(){
//获取查询系部
String department = txtDepartment.getText().trim();
if(!department.equals( "" )){
students = studentService.findStudentsByDepartment( department );
if(students.size() > 0){
//让删除按钮可用
btnDelete.setEnabled( true );
}
//填充表格
fillTableData();
}else{
JOptionPane.showMessageDialog( this,"请输入待查系部!","警告",JOptionPane.WARNING_MESSAGE );
txtDepartment.requestFocus();
}
}
/**
* 填充表格方法
*/
private void fillTableData(){
//填充表头
colHead.clear();
colHead.add( "学号" );
colHead.add( "姓名" );
colHead.add( "性别" );
colHead.add( "年龄" );
colHead.add( "系部" );
colHead.add( "班级" );
colHead.add( "电话" );
//填充表记录
rows.clear();
for (Student student : students){
Vector<String> currentRow = new Vector<String>( );
currentRow.addElement( student.getId() );
currentRow.addElement( student.getName() );
currentRow.addElement( student.getSex() );
currentRow.addElement( student.getAge() +"");
currentRow.addElement( student.getDepartment() );
currentRow.addElement( student.getClazz() );
currentRow.addElement( student.getTelephone() );
//将当前行添加到记录行集
rows.add( currentRow );
}
//创建表格(参数1:记录集;参数2:表头)
table = new JTable( rows,colHead );
//定义滚动面板
scroller = new JScrollPane( table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED );
//将滚动面板添加到中心面板
pnlCenter.add( scroller,BorderLayout.CENTER );
//重绘窗体
repaint( );
//判断是否有记录行
if(rows.isEmpty()){
JOptionPane.showMessageDialog( this,"没有符合条件的记录!","错误提示",JOptionPane.WARNING_MESSAGE );
txtDepartment.setText( "" );
}else {
//让滚动条移到最上方
scroller.getVerticalScrollBar().setValue(0);
}
}
/**
* 主方法
* @param args
*/
public static void main(String[] args) {
new DeleteStudentsByDepartmentFrame( "" );
}
}
效果如下: