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