📄 modifyanddelbooktype.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 + -