⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modifyanddelreadertype.java

📁 Java Swing写的图书馆管理系统
💻 JAVA
字号:
package library.iframe;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableModel;

import library.DBConnectOperation.Dbo;
import library.model.BookType;
import library.model.ReaderType;
import library.util.CreateIcon;

public class ModifyAndDelReaderType extends JInternalFrame {
	private JTextField typeId;
	private JTextField typeName;
	private JTextField maxBorrowNumber;
	private JTextField maxKeepDays;
	private JButton saveButton;
	private JButton cancelButton;
	private JButton delButton;
	private ReaderType readerType;
	private ArrayList readerTypeList;
	private JTable table;
	private ReaderType tempReaderType=new ReaderType();
	private JButton clearButton;
	private int tempId=-1;	//置搜索标志,当tempId!=-1是表示已经搜索到指定的读者类型

//	首先输入读者类别名称,为了能够修改此读者类别的名称,引入了tempId标志,当tempId=-1是表示读者类别不存在
//	或未输入读者类别名称,当tempId=0是表示读者类别名称输入正确,当点击保存按钮或重新选定读者类别按钮时,、
//	该标志被重置,当要取消此次修改读者类别时,一定要单击重新选定读者类别或返回按钮,否则会重命名当前的读者类别
	
	private DefaultTableModel model=new DefaultTableModel();
	private String columnNames[]={"类型ID","类型名称","最大借阅数量","最大借阅天数"};
	public ModifyAndDelReaderType(){
		super();
		setBounds(100, 100, 500, 380);
		setTitle("读者类别修改或删除");
		setClosable(true);
		setIconifiable(true);
		
		//设置顶部图片面板
		JLabel labelTop=new JLabel();
		labelTop.setIcon(CreateIcon.add("readerTypeModify.jpg"));
		getContentPane().add(labelTop,BorderLayout.NORTH);
		((BorderLayout) getContentPane().getLayout()).setHgap(5);
		
		//设置中央面板,用于显示二维表格
		JPanel panelCenter=new JPanel();
		getContentPane().add(panelCenter);
		JScrollPane scrollPane=new JScrollPane();
		scrollPane.setPreferredSize(new Dimension(460,120));
		panelCenter.add(scrollPane);
		
		table=new JTable();
		scrollPane.setViewportView(table);	
		table.setModel(model);
		model.setColumnIdentifiers(columnNames);
		
		readerTypeList=new ArrayList();
		readerTypeList=Dbo.selectReaderType();
		for(int i=0;i<readerTypeList.size();i++){
			tempReaderType=(ReaderType)readerTypeList.get(i);
			addTableRow(tempReaderType);
		}
		//获取选择的行
		table.addMouseListener(new MouseAdapter(){
			public void mousePressed(MouseEvent e){
				if(readerTypeList.size()>0){	//当图书类别表不空时
					int i=table.getSelectedRow();
					System.out.println(i);
					if(i!=-1){
						String tempStr=(String)table.getValueAt(i, 1);	//返回指定行列所存储的值
						typeName.setText(tempStr);
						table.transferFocus();
						typeId.transferFocus();
						typeName.transferFocus();
					}
				}
			}
		});
		
		//设置底部面板,用于添加各种文本框和相迎的按钮
		JPanel panelBottom=new JPanel();
		BorderLayout borderLayoutBottom=new BorderLayout();
		borderLayoutBottom.setVgap(10);
		panelBottom.setLayout(borderLayoutBottom);
		getContentPane().add(panelBottom,BorderLayout.SOUTH);
		
		//设置底部上面板,用于添加各种文本框
		JPanel panelBottomUp=new JPanel();
		GridLayout gridLayoutBottomUp=new GridLayout(0,4);
		gridLayoutBottomUp.setVgap(10);
		gridLayoutBottomUp.setHgap(5);
		panelBottomUp.setLayout(gridLayoutBottomUp);
		panelBottom.add(panelBottomUp);
		
		JLabel labelTypeId=new JLabel();
		labelTypeId.setText("类别编号:");
		labelTypeId.setHorizontalAlignment(SwingConstants.RIGHT);
		panelBottomUp.add(labelTypeId);
		typeId=new JTextField();
		typeId.setEditable(false);
		panelBottomUp.add(typeId);
		
		JLabel labelTypeName=new JLabel();
		labelTypeName.setText("读者类别名称:");
		labelTypeName.setHorizontalAlignment(SwingConstants.RIGHT);
		panelBottomUp.add(labelTypeName);
		typeName=new JTextField();
		typeName.addFocusListener(new FocusAdapter(){
			public void focusLost(FocusEvent e){
				if((Dbo.selectReaderTypeName(typeName.getText()))==null&&tempId==-1){
					JOptionPane.showMessageDialog(null,"要修改的读者类别不存在,请重新输入!");
					typeName.setText("");
					typeId.setText("");
					maxBorrowNumber.setText("");
					maxKeepDays.setText("");
					return;
				}
				else if((Dbo.selectDetailReaderType(typeName.getText())!=null)){	//重名名读者类别名称时,取消该文本框的监听
					readerType=Dbo.selectDetailReaderType(typeName.getText());
					typeName.setText(readerType.getTypeName());
					typeId.setText(new Integer(readerType.getTypeId()).toString());
					maxBorrowNumber.setText(new Integer(readerType.getMaxBorrowNumber()).toString());
					if(new Integer(readerType.getMaxKeepDays())==0)	//表示使用图书类别中的最大借阅天数信息,而不使用readerType中的最大借阅天数
							maxKeepDays.setText("");
						else maxKeepDays.setText(new Integer(readerType.getMaxKeepDays()).toString());
					return;
				}
			}
		});
		panelBottomUp.add(typeName);
		
		JLabel labelMaxBorrowNumber=new JLabel();
		labelMaxBorrowNumber.setText("最大借阅数量:");
		labelMaxBorrowNumber.setHorizontalAlignment(SwingConstants.RIGHT);
		panelBottomUp.add(labelMaxBorrowNumber);
		maxBorrowNumber=new JTextField();
		maxBorrowNumber.addKeyListener(new KeyAdapter(){
			public void keyReleased(KeyEvent e){
				try{
					Integer.parseInt(maxBorrowNumber.getText());
				}catch(NumberFormatException ne){
					JOptionPane.showMessageDialog(null, "最大借阅数量应为数字!");
					maxBorrowNumber.setText("");
					return;
				}
			}
		});
		panelBottomUp.add(maxBorrowNumber);
		
		JLabel labelMaxKeepDays=new JLabel();
		labelMaxKeepDays.setText("最大借阅天数");
		labelMaxKeepDays.setHorizontalAlignment(SwingConstants.RIGHT);
		panelBottomUp.add(labelMaxKeepDays);
		maxKeepDays=new JTextField();
		maxKeepDays.addKeyListener(new KeyAdapter(){
			public void keyReleased(KeyEvent ee){
				try{
					Integer.parseInt(maxKeepDays.getText());
				}catch(NumberFormatException ex){
					JOptionPane.showMessageDialog(null,"最大借阅天数应为数字!");
					maxKeepDays.setText("");
					return;
				}
			}
		});
		panelBottomUp.add(maxKeepDays);
		
		//设置底部下面板,用于添加相应按钮
		JPanel panelBottomDown=new JPanel();
		FlowLayout flowLayout=new FlowLayout();
		flowLayout.setHgap(15);
		flowLayout.setVgap(5);
		panelBottomDown.setLayout(flowLayout);
		panelBottom.add(panelBottomDown,BorderLayout.SOUTH);
		
		saveButton=new JButton();
		saveButton.setText("保存");
		saveButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				if(typeName.getText().length()==0){
					JOptionPane.showMessageDialog(null,"读者类别名称不能为空!");
					return;
				}
				if(maxBorrowNumber.getText().length()==0){
					JOptionPane.showMessageDialog(null,"最大借阅数量不能为空!");
					return;
				}
				if(Dbo.selectReaderTypeName(typeName.getText())!=null&&!typeName.getText().equals(readerType.getTypeName())){
					JOptionPane.showMessageDialog(null, "与现有读者类别重复,请重新输入!");
					return;
				}
				String sql;
				if(maxKeepDays.getText().length()==0)
					sql="update tb_readerType set typeName='"+typeName.getText()+"',maxBorrowNumber="+Integer.parseInt(maxBorrowNumber.getText())
					+",maxKeepDays=NULL"
					+" where typeId="+readerType.getTypeId();
					else sql="update tb_readerType set typeName='"+typeName.getText()+"',maxBorrowNumber="+Integer.parseInt(maxBorrowNumber.getText())
					+",maxKeepDays="+Integer.parseInt(maxKeepDays.getText())
					+" where typeId="+readerType.getTypeId();

				int i=Dbo.executeUpdate(sql);
				if(i!=-1){
					JOptionPane.showMessageDialog(null, "修改成功!");
					typeName.setText("");
					typeId.setText("");
					maxKeepDays.setText("");
					maxBorrowNumber.setText("");
					tempId=-1;	//重置查找标志
					while(model.getRowCount()!=0)		//重新显示表
						model.removeRow(model.getRowCount()-1);
					readerTypeList=Dbo.selectReaderType();
					for(int j=0;j<readerTypeList.size();j++){
						tempReaderType=(ReaderType)readerTypeList.get(j);
						addTableRow(tempReaderType);
					}
				}
				else {
					JOptionPane.showMessageDialog(null,"添加失败,请检查数据源!");
					return;
				}
			}
		});
		panelBottomDown.add(saveButton);
		
		delButton=new JButton();
		delButton.setText("删除");
		delButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				if(typeName.getText().length()==0){
					JOptionPane.showMessageDialog(null,"读者名称类别不能为空!");
					return;
				}
				String sql="delete from tb_readerType where typeId="+readerType.getTypeId();
				int i=Dbo.executeUpdate(sql);
				if(i!=-1){
					JOptionPane.showMessageDialog(null,	"删除成功!");
					typeName.setText("");
					typeId.setText("");
					maxBorrowNumber.setText("");
					maxKeepDays.setText("");
					tempId=-1;	//重置查找标志
					while(model.getRowCount()!=0)		//重新显示表
						model.removeRow(model.getRowCount()-1);
					readerTypeList=Dbo.selectReaderType();
					for(int j=0;j<readerTypeList.size();j++){
						tempReaderType=(ReaderType)readerTypeList.get(j);
						addTableRow(tempReaderType);
					}
					return;
				}
				else{
					JOptionPane.showMessageDialog(null,"该读者类别正在使用,请先删除该类别下所有的读者后,重新进行此操作!");
					return;
				}
			}
		});
		panelBottomDown.add(delButton);
		
		clearButton=new JButton();
		clearButton.setText("取消本次修改");
		clearButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				typeName.setText("");
				typeId.setText("");
				maxBorrowNumber.setText("");
				maxKeepDays.setText("");
				tempId=-1;	//重置查找标志
			}
		});
		panelBottomDown.add(clearButton);
		
		cancelButton=new JButton();
		cancelButton.setText("返回");
		cancelButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				dispose();
			}
		});
		panelBottomDown.add(cancelButton);
		setVisible(true);
	}
	public void addTableRow(ReaderType readerType){	//类别查询结果不为空时调用
		String str[]=new String[4];
		str[0]=new Integer(readerType.getTypeId()).toString();
		str[1]=readerType.getTypeName();
		str[2]=new Integer(readerType.getMaxBorrowNumber()).toString();
		str[3]=new Integer(readerType.getMaxKeepDays()).toString();
		if(new Integer(readerType.getMaxKeepDays())==0)	//表示使用图书类别中的最大借阅天数信息,而不使用readerType中的最大借阅天数
			str[3]="";
		else str[3]=new Integer(readerType.getMaxKeepDays()).toString();
		model.addRow(str);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -