?? 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 + -