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

📄 modifyanddelbooktype.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.awt.event.MouseMotionAdapter;
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.util.CreateIcon;

public class ModifyAndDelBookType extends JInternalFrame {
	private DefaultTableModel model=new DefaultTableModel();
	private JTextField typeName=new JTextField();
	private JTextField fk;
	private JTextField expire;
	private JTextField days;
	private JButton saveButton;
	private JButton cancelButton;
	private JButton delButton;
	private JButton clearButton;
	private BookType bookType;
	private JTable table;
	private ArrayList bookTypeList;
	private int tempId=-1;	//设置标志,用于重名名图书类别名称时使用
	private final String columnNames[]={"类别名称","罚款金额","使用年限","可借阅天数"};
	private BookType tempBookType;
	public ModifyAndDelBookType(){
		super();
		setBounds(100, 100, 500, 400);
		setTitle("图书类别修改或删除");
		setClosable(true);
		setIconifiable(true);
		setResizable(false);
		
		//设置顶部图片
		JLabel labelTop=new JLabel();
		labelTop.setIcon(CreateIcon.add("booktypemodify.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,160));
		panelCenter.add(scrollPane);
		table=new JTable();
		scrollPane.setViewportView(table);
		table.setModel(model);
		model.setColumnIdentifiers(columnNames);
		//向表中添加数据
		bookTypeList=new ArrayList();
		bookTypeList=Dbo.selectAllBookType();
		for(int i=0;i<bookTypeList.size();i++){
			tempBookType=(BookType)bookTypeList.get(i);
			addTableRow(tempBookType);
		}
		//获取选择的行
		table.addMouseListener(new MouseAdapter(){
			public void mousePressed(MouseEvent e){
				if(bookTypeList.size()>0){	//当图书类别表不空时
					int i=table.getSelectedRow();
					//System.out.println(i);
					if(i!=-1){
						String tempStr=(String)table.getValueAt(i, 0);	//返回指定行列所存储的值
						typeName.setText(tempStr);
						table.transferFocus();
						typeName.transferFocus();
					}
				}
			}
		});

		
	
		//设置底部面板,用于添加文本框和相应按钮
		JPanel panelBottom=new JPanel();
		BorderLayout borderLayoutBottom=new BorderLayout();
		borderLayoutBottom.setVgap(5);
		panelBottom.setLayout(borderLayoutBottom);
		getContentPane().add(panelBottom,BorderLayout.SOUTH);
		//设置底部上面板,用于添加文本框
		JPanel panelBottomUp=new JPanel();
		GridLayout gridLayoutBottomUp=new GridLayout(0,4);
		gridLayoutBottomUp.setHgap(10);
		gridLayoutBottomUp.setVgap(10);
		panelBottomUp.setLayout(gridLayoutBottomUp);
		panelBottom.add(panelBottomUp);
		
		JLabel labelTypeName=new JLabel();
		labelTypeName.setText("类别名称:");
		labelTypeName.setHorizontalAlignment(SwingConstants.RIGHT);
		panelBottomUp.add(labelTypeName);
		typeName.addFocusListener(new FocusAdapter(){
			public void focusLost(FocusEvent e){
				if((Dbo.selectBookTypeName(typeName.getText())==null)&&tempId==-1){
					JOptionPane.showMessageDialog(null,"要修改的图书类别不存在,请重新输入!");
					typeName.setText("");
					return;
				}
				else if((Dbo.selectBookTypeName(typeName.getText())!=null)){	//重名名图书类别名称时,取消该文本框的监听
					bookType=Dbo.selectDetailBookType(typeName.getText());
					typeName.setText(bookType.getTypeName());
					fk.setText(new Integer(bookType.getFk()).toString());
					expire.setText(new Integer(bookType.getExpired()).toString());
					days.setText(new Integer(bookType.getDays()).toString());
					tempId=0;	//设置存在标志
					return;
				}
			}
		});
		panelBottomUp.add(typeName);
		
		JLabel labelFk=new JLabel();
		labelFk.setText("罚款(单位:角/天)");
		labelFk.setHorizontalAlignment(SwingConstants.RIGHT);
		panelBottomUp.add(labelFk);
		fk=new JTextField();
		fk.addKeyListener(new KeyAdapter(){
			public void keyReleased(KeyEvent e){
				try{
					Integer.parseInt(fk.getText());
				}catch(NumberFormatException ne){
					JOptionPane.showMessageDialog(null, "罚款数额应为数字!");
					fk.setText("");
					return;
				}
			}
		});
		panelBottomUp.add(fk);
		
		JLabel labelExpire=new JLabel();
		labelExpire.setText("使用年限(单位:年)");
		labelExpire.setHorizontalAlignment(SwingConstants.RIGHT);
		panelBottomUp.add(labelExpire);
		expire=new JTextField();
		expire.addKeyListener(new KeyAdapter(){
			public void keyReleased(KeyEvent ee){
				try{
					Integer.parseInt(expire.getText());
				}catch(NumberFormatException ex){
					JOptionPane.showMessageDialog(null,"使用年限应为数字!");
					expire.setText("");
					return;
				}
			}
		});
		panelBottomUp.add(expire);
		
		JLabel labelDays=new JLabel();
		labelDays.setText("可借阅天数:");
		labelDays.setHorizontalAlignment(SwingConstants.RIGHT);
		panelBottomUp.add(labelDays);
		days=new JTextField();
		days.addKeyListener(new KeyAdapter(){
			public void keyReleased(KeyEvent de){
				try{
					Integer.parseInt(days.getText());
				}catch(NumberFormatException dn){
					JOptionPane.showMessageDialog(null, "可借阅天数应为数字!");
					days.setText("");
					return;
				}
			}
		});
		panelBottomUp.add(days);
		
		//设置底部下面板,用于添加按钮
		JPanel panelBottomDown=new JPanel();
		panelBottom.add(panelBottomDown,BorderLayout.SOUTH);
		FlowLayout flowLayoutBottomDown=new FlowLayout();
		flowLayoutBottomDown.setHgap(20);
		flowLayoutBottomDown.setVgap(10);
		panelBottomDown.setLayout(flowLayoutBottomDown);
		
		saveButton=new JButton();
		saveButton.setText("保存");
		saveButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				if(typeName.getText().length()==0){
					JOptionPane.showMessageDialog(null,"图书类别名称不能为空!");
					return;
				}
				if(fk.getText().length()==0){
					JOptionPane.showMessageDialog(null,"罚款数额不能为空!");
					return;
				}
				if(expire.getText().length()==0){
					JOptionPane.showMessageDialog(null,"图书使用年限不能为空!");
					return;
				}
				if(days.getText().length()==0){
					JOptionPane.showMessageDialog(null, "可借阅天数不能为空!");
					return;
				}
				if((Dbo.selectBookTypeName(typeName.getText())!=null)&&!typeName.getText().equals(bookType.getTypeName())){
					JOptionPane.showMessageDialog(null, "与现有图书类别重复,请重新输入!");
					return;
				}
				String sql="update tb_bookType set typeName='"+typeName.getText()+"',fk="+Integer.parseInt(fk.getText())
				+",expire="+Integer.parseInt(expire.getText())+",days="+Integer.parseInt(days.getText())
				+"where id="+bookType.getId();
				int i=Dbo.executeUpdate(sql);
				if(i!=-1){
					JOptionPane.showMessageDialog(null, "修改成功!");
					typeName.setText("");
					fk.setText("");
					expire.setText("");
					days.setText("");
					tempId=-1;	//重置查找标志
					while(model.getRowCount()!=0)		//重新显示表
						model.removeRow(model.getRowCount()-1);
					bookTypeList=Dbo.selectAllBookType();
					for(int j=0;j<bookTypeList.size();j++){
						tempBookType=(BookType)bookTypeList.get(j);
						addTableRow(tempBookType);
					}
				}
				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_bookType where id="+bookType.getId()+"";
				int i=Dbo.executeUpdate(sql);
				if(i!=-1){
					JOptionPane.showMessageDialog(null,	"删除成功!");
					typeName.setText("");
					fk.setText("");
					expire.setText("");
					days.setText("");
					tempId=-1;	//重置查找标志
					while(model.getRowCount()!=0)
						model.removeRow(model.getRowCount()-1);
					bookTypeList=Dbo.selectAllBookType();
					for(int j=0;j<bookTypeList.size();j++){
						tempBookType=(BookType)bookTypeList.get(j);
						addTableRow(tempBookType);
					}
					return;
				}
				else{
					JOptionPane.showMessageDialog(null,"该图书类别正在使用,请先删除该类别下所有的图书后,重新进行此操作!");
					return;
				}
			}
		});
		panelBottomDown.add(delButton);
		
		cancelButton=new JButton();
		cancelButton.setText("返回");
		cancelButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				dispose();
			}
		});
		panelBottomDown.add(cancelButton);
		
		clearButton=new JButton();
		clearButton.setText("重新选定图书类别");
		clearButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				typeName.setText("");
				fk.setText("");
				expire.setText("");
				days.setText("");
				tempId=-1;	//重置查找标志
			}
		});
		panelBottomDown.add(clearButton);
		
		setVisible(true);
	}
	public void addTableRow(BookType bookType){	//类别查询结果不为空时调用
		String str[]=new String[4];
		str[0]=bookType.getTypeName();
		str[1]=new Integer(bookType.getFk()).toString();
		str[2]=new Integer(bookType.getExpired()).toString();
		str[3]=new Integer(bookType.getDays()).toString();
		model.addRow(str);
	}
}

//首先输入图书类别名称,为了能够修改此图书类别的名称,引入了tempId标志,当tempId=-1是表示图书类别不存在
//或未输入图书类别名称,当tempId=0是表示图书类别名称输入正确,当点击保存按钮或重新选定图书类别按钮时,、
//该标志被重置,当要取消此次修改图书类别时,一定要单击重新选定图书类别或返回按钮,否则会重命名当前的图书类别

⌨️ 快捷键说明

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