📄 modifyanddelbook.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.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFormattedTextField;
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.Book;
import library.model.BookType;
import library.util.CreateIcon;
public class ModifyAndDelBook extends JInternalFrame {
private DefaultTableModel model=new DefaultTableModel();
private JTextField ISBN;
private JComboBox bookTypeComboBox;
private JTextField name;
private JTextField writer;
private JTextField translator;
private JTextField publisher;
private JFormattedTextField pubDate;
private JTextField price;
private JButton saveButton;
private JButton cancelButton;
private JButton clearButton;
private JButton delButton;
private Book book;
private SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd"); //设置日期格式
private final String columnNames[]={"图书编号","图书类别","图书名称","作者","译者","出版社","出版日期","单价"};
public ModifyAndDelBook(){
super();
setBounds(100, 100, 590, 420);
setTitle("图书修改或删除");
setClosable(true);
setIconifiable(true);
setResizable(false);
//设置顶部图片
JLabel labelTop=new JLabel();
labelTop.setIcon(CreateIcon.add("bookmodify.jpg"));
getContentPane().add(labelTop,BorderLayout.NORTH);
((BorderLayout) getContentPane().getLayout()).setVgap(5);
//设置中央面板,用于显示二维表格
JPanel panelCenter=new JPanel();
getContentPane().add(panelCenter);
JScrollPane scrollPane=new JScrollPane();
scrollPane.setPreferredSize(new Dimension(550,120));
panelCenter.add(scrollPane);
JTable table=new JTable();
table.setModel(model);
model.setColumnIdentifiers(columnNames);
scrollPane.setViewportView(table);
//设置底部面板,用于显示要修改的图书信息和相应的按钮
JPanel panelBottom=new JPanel();
BorderLayout borderLayoutBottom=new BorderLayout();
borderLayoutBottom.setVgap(5);
panelBottom.setLayout(borderLayoutBottom);
getContentPane().add(panelBottom,BorderLayout.SOUTH);
//设置底部上面板,用于显示并修改要修改的图书信息
JPanel panelBottomUp=new JPanel();
panelBottom.add(panelBottomUp);
GridLayout gridLayoutBottomUp=new GridLayout(0,6);
gridLayoutBottomUp.setVgap(5);
gridLayoutBottomUp.setHgap(5);
panelBottomUp.setLayout(gridLayoutBottomUp);
bookTypeComboBox=new JComboBox();
ArrayList arrayList=Dbo.selectBookCategory();
for(int i=0;i<arrayList.size();i++){
BookType bookType=(BookType)arrayList.get(i);
bookTypeComboBox.addItem(bookType);
}
JLabel labelISBN=new JLabel();
labelISBN.setText("图书编号:");
labelISBN.setHorizontalAlignment(SwingConstants.RIGHT);
panelBottomUp.add(labelISBN);
ISBN=new JTextField("请输入13书号",13);
ISBN.addFocusListener(new FocusAdapter(){
public void focusLost(FocusEvent e){
if(Dbo.selectBookISBN(ISBN.getText())==null){
JOptionPane.showMessageDialog(null,"图书编号输入错误,该图书不存在!");
ISBN.setText("");
return;
}
else{
book=Dbo.selectBook(ISBN.getText());
name.setText(book.getBookname());
writer.setText(book.getWriter());
//JComboBox有个数据模ComboBoxModel,这个数据模,你可以看成是一个Collection.
//当你往里面添加元素的时候,即当调用addItem(Object anObject)的时候,实际上,是往数据模里面添加元素.因此
//设置下拉列表所选的选项是要设置数据模型的setSelectedItem
bookTypeComboBox.getModel().setSelectedItem(Dbo.selectSelectedBookCategory(book.getTypeid()));
try{
Date tempDate=format.parse(book.getDate()); //转换日期格式
translator.setText(book.getTranslator());
publisher.setText(book.getPublisher());
pubDate.setText(format.format(tempDate));
price.setText(new Float(book.getPrice()).toString());
}catch(Exception es){
es.printStackTrace();
}
}
}
});
panelBottomUp.add(ISBN);
JLabel bookTypeInfo=new JLabel();
bookTypeInfo.setText("图书种类");
bookTypeInfo.setHorizontalAlignment(SwingConstants.RIGHT);
panelBottomUp.add(bookTypeInfo);
panelBottomUp.add(bookTypeComboBox);
JLabel labelName=new JLabel();
labelName.setText("图书名称:");
labelName.setHorizontalAlignment(SwingConstants.RIGHT);
panelBottomUp.add(labelName);
name=new JTextField();
name.addKeyListener(new KeyAdapter(){
public void keyReleased(KeyEvent e){
if(name.getText().length()>40){
JOptionPane.showMessageDialog(null, "图书名称不能超过40个字符");
name.setText("");
}
}
});
panelBottomUp.add(name);
JLabel labelWriter=new JLabel();
labelWriter.setText("作者:");
labelWriter.setHorizontalAlignment(SwingConstants.RIGHT);
panelBottomUp.add(labelWriter);
writer=new JTextField();
writer.addKeyListener(new KeyAdapter(){
public void keyReleased(KeyEvent e){
if(writer.getText().length()>20){
JOptionPane.showMessageDialog(null, "作者不能超过20个字符");
writer.setText("");
}
}
});
panelBottomUp.add(writer);
JLabel labelTranslator=new JLabel();
labelTranslator.setText("译者:");
labelTranslator.setHorizontalAlignment(SwingConstants.RIGHT);
panelBottomUp.add(labelTranslator);
translator=new JTextField();
translator.addKeyListener(new KeyAdapter(){
public void keyReleased(KeyEvent e){
if(translator.getText().length()>20){
JOptionPane.showMessageDialog(null, "译者不能超过20个字符");
translator.setText("");
}
}
});
panelBottomUp.add(translator);
JLabel labelPublisher=new JLabel();
labelPublisher.setText("出版社:");
labelPublisher.setHorizontalAlignment(SwingConstants.RIGHT);
panelBottomUp.add(labelPublisher);
publisher=new JTextField();
publisher.addKeyListener(new KeyAdapter(){
public void keyReleased(KeyEvent e){
if(publisher.getText().length()>20){
JOptionPane.showMessageDialog(null, "出版社不能超过20个字符");
publisher.setText("");
}
}
});
panelBottomUp.add(publisher);
JLabel labelPubDate=new JLabel();
labelPubDate.setText("出版日期:");
labelPubDate.setHorizontalAlignment(SwingConstants.RIGHT);
panelBottomUp.add(labelPubDate);
pubDate=new JFormattedTextField(format); //按照指定格式编辑文本框
pubDate.setValue(new Date()); //设置文本框pubDate用来存储日期.
panelBottomUp.add(pubDate);
JLabel labelPrice=new JLabel();
labelPrice.setText("价格");
labelPrice.setHorizontalAlignment(SwingConstants.RIGHT);
panelBottomUp.add(labelPrice);
price=new JTextField();
price.addKeyListener(new KeyAdapter(){
public void keyReleased(KeyEvent e){
try{
Float.parseFloat(price.getText());
}
catch(NumberFormatException se){
JOptionPane.showMessageDialog(null, "只能输入数字!请重新输入");
price.setText("");
}
}
});
panelBottomUp.add(price);
//设置底部下面板,用于设置保存和提交按钮等。
JPanel panelBottomDown=new JPanel();
FlowLayout flowLayout=new FlowLayout();
flowLayout.setVgap(10);
flowLayout.setHgap(20);
panelBottomDown.setLayout(flowLayout);
panelBottom.add(panelBottomDown,BorderLayout.SOUTH);
saveButton=new JButton();
saveButton.setText("保存");
saveButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(ISBN.getText().length()==0){
JOptionPane.showMessageDialog(null,"书号不能为空!");
return;
}
if(name.getText().length()==0){
JOptionPane.showMessageDialog(null,"书名不能为空!");
return;
}
if(publisher.getText().length()==0){
JOptionPane.showMessageDialog(null, "出版社不能为空!");
return;
}
if(price.getText().length()==0){
JOptionPane.showMessageDialog(null,"单价不能为空!");
return;
}
String ISBNTemp=ISBN.getText();
BookType bookCategory=(BookType)bookTypeComboBox.getSelectedItem();
int bookIdTemp=bookCategory.getId(); //获取图书类别id;
String bookNameTemp=name.getText();
String writerTemp=writer.getText();
String translatorTemp=translator.getText();
String publisherTemp=publisher.getText();
String pubDateTemp=pubDate.getText();
float priceTemp=Float.parseFloat(price.getText());
String sql="update tb_bookinfo set ISBN='"+ISBNTemp+"',id="+bookIdTemp+",bookname='"
+bookNameTemp+"',writer='"+writerTemp+"',translator='"+translatorTemp+"',publisher='"+publisherTemp+"',date='"
+pubDateTemp+"',price="+priceTemp
+"where ISBN='"+ISBNTemp+"'";
int i=Dbo.executeUpdate(sql);
if(i!=-1){
JOptionPane.showMessageDialog(null,"修改成功!");
String str[]=new String[8];
str[0]=ISBN.getText();
str[1]=bookTypeComboBox.getSelectedItem().toString();
str[2]=name.getText();
str[3]=writer.getText();
str[4]=translator.getText();
str[5]=publisher.getText();
str[6]=pubDate.getText();
str[7]=price.getText();
addTableRow(str);
ISBN.setText("");
name.setText("");
writer.setText("");
translator.setText("");
publisher.setText("");
pubDate.setText("");
price.setText("");
Dbo.close();
}
else{
JOptionPane.showMessageDialog(null, "修改失败,请检查数据源");
return;
}
}
});
panelBottomDown.add(saveButton);
delButton=new JButton();
delButton.setText("删除");
delButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
if(ISBN.getText().length()==0){
JOptionPane.showMessageDialog(null,"书号不能为空!");
return;
}
String sql="delete from tb_bookinfo where ISBN='"+ISBN.getText()+"'";
int i=Dbo.executeUpdate(sql);
if(i!=-1){
JOptionPane.showMessageDialog(null, "删除成功!");
ISBN.setText("");
name.setText("");
writer.setText("");
translator.setText("");
publisher.setText("");
pubDate.setText("");
price.setText("");
return;
}
else{
JOptionPane.showMessageDialog(null,"该图书已被借阅,暂时不能删除!");
return;
}
}
});
panelBottomDown.add(delButton);
clearButton=new JButton();
clearButton.setText("清除表中数据");
clearButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
if(model.getRowCount()!=0){
while(model.getRowCount()!=0)
model.removeRow(model.getRowCount()-1);
ISBN.setText("");
name.setText("");
writer.setText("");
translator.setText("");
publisher.setText("");
pubDate.setText("");
price.setText("");
return;
}
else {
JOptionPane.showMessageDialog(null, "表格中暂时没有数据!");
return;
}
}
});
panelBottomDown.add(clearButton);
cancelButton=new JButton();
cancelButton.setText("返回");
cancelButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
dispose();
}
});
panelBottomDown.add(cancelButton);
setVisible(true);
}
public void addTableRow(String str[]){
model.addRow(str);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -