📄 cdadminpanel.java
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.math.BigDecimal;
import java.sql.*;
public class CDAdminPanel extends JPanel
{
final Font font = new Font("华文新魏", Font.PLAIN, 20);
public static String name = "碟片维护";
private JPanel workPanel;
private JLabel label;
private JTextField ID, film, number, country, times, players, remark;
private JComboBox type;
private JTable table;
private JButton newButton, changeButton, showCDButton, cancelButton;
private int num, row;
private String query = "select filmID 编号, filmName 影片名, filmType"
+ " 类型, CDNumber '片(集)数', country 国家, hireTimes 被租次数,"
+ " players 主演, remark 备注 from films order by filmID desc";
public CDAdminPanel(boolean add)
{
setLayout(new BorderLayout());
JLabel title = new JLabel("碟片维护", JLabel.CENTER);
title.setFont(font);
add(title, BorderLayout.NORTH);
workPanel = new JPanel();
workPanel.setLayout(new GridLayout(4, 6, 5, 5));
label = new JLabel("编号:", JLabel.CENTER);
workPanel.add(label);
ID = new JTextField();
ID.setEditable(false);
workPanel.add(ID);
label = new JLabel("片名:", JLabel.CENTER);
workPanel.add(label);
film = new JTextField();
workPanel.add(film);
label = new JLabel("类型:", JLabel.CENTER);
workPanel.add(label);
type = new JComboBox();
type.addItem("动作片");
type.addItem("爱情片");
type.addItem("喜剧片");
type.addItem("恐怖片");
type.addItem("战争片");
type.addItem("科幻片");
type.addItem("动画片");
type.addItem("连续剧");
type.setMaximumRowCount(5);
workPanel.add(type);
label = new JLabel("片(集)数:", JLabel.CENTER);
workPanel.add(label);
number = new JTextField();
workPanel.add(number);
label = new JLabel("国家:", JLabel.CENTER);
workPanel.add(label);
country = new JTextField();
workPanel.add(country);
label = new JLabel("被租次数:", JLabel.CENTER);
workPanel.add(label);
times = new JTextField();
workPanel.add(times);
label = new JLabel("主演:(<50字)", JLabel.CENTER);
workPanel.add(label);
players = new JTextField();
workPanel.add(players);
label = new JLabel("备注:(<100字)", JLabel.CENTER);
workPanel.add(label);
remark = new JTextField();
workPanel.add(remark);
label = new JLabel();
workPanel.add(label);
label = new JLabel();
workPanel.add(label);
newButton = new JButton("我要添加影片");
newButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
if(event.getActionCommand().equals("我要添加影片"))
{
changeButton.setEnabled(false);
table.setCellSelectionEnabled(false);
setState(true);
((JButton)event.getSource()).setText("确定");
cancelButton.setEnabled(true);
}
else
{
if(film.getText().equals("") || number.getText().equals(""))
{
JOptionPane.showMessageDialog(CDAdminPanel.this,
"请把影片的关键信息输入完整!", "信息错误", JOptionPane.ERROR_MESSAGE);
}
else
{
changeButton.setEnabled(true);
table.setRowSelectionAllowed(true);
String str = "insert into films (filmName, filmType, "
+ "CDNumber, players, country, adminID, remark) values ("
+ "'" + film.getText() + "', '" + type.getSelectedItem()
+ "', '" + number.getText() + "', '" + players.getText()
+ "', '" + country.getText() + "', '" + FilmHireSystem.tableModel.adminID
+ "', '" + remark.getText() + "')";
try
{
FilmHireSystem.tableModel.setAutoCommit(false);
FilmHireSystem.tableModel.setExecute(str, query);
for (int i = 1; i<=Integer.parseInt(number.getText()); i++)
{
str = "insert into CDs (CDno, filmID) values ('" + i + "', '" + (BigDecimal)FilmHireSystem.tableModel.getValueAt(0, 0) + "')";
FilmHireSystem.tableModel.setExecute(str, query);
}
FilmHireSystem.tableModel.commit();
}
catch(SQLException sql)
{
JOptionPane.showMessageDialog(null, sql.getMessage(),
"数据库查询错误", JOptionPane.ERROR_MESSAGE);
FilmHireSystem.tableModel.rollback();
System.err.println(sql.getMessage());
}
FilmHireSystem.tableModel.setAutoCommit(true);
queryFilm(true);
((JButton)event.getSource()).setText("我要添加影片");
setState(false);
}
}
}
}
);
workPanel.add(newButton);
changeButton = new JButton("我要修改信息");
changeButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
if(event.getActionCommand().equals("我要修改信息"))
{
newButton.setEnabled(false);
table.setCellSelectionEnabled(false);
((JButton)event.getSource()).setText("确定");
showCDButton.setEnabled(false);
cancelButton.setEnabled(true);
film.setEditable(true);
type.setEnabled(true);
number.setEditable(true);
country.setEditable(true);
players.setEditable(true);
remark.setEditable(true);
num = Integer.parseInt(number.getText());
row = table.getSelectedRow();
}
else
{
if(film.getText().equals("") || number.getText().equals(""))
{
JOptionPane.showMessageDialog(CDAdminPanel.this,
"请把影片的关键信息输入完整!", "信息错误", JOptionPane.ERROR_MESSAGE);
}
else
{
newButton.setEnabled(true);
table.setRowSelectionAllowed(true);
((JButton)event.getSource()).setText("我要修改信息");
setState(false);
String str = "update films set filmName = '" + film.getText()
+ "', filmType = '" + type.getSelectedItem()
+ "', CDNumber = '" + number.getText()
+ "', players = '" + players.getText()
+ "', country = '" + country.getText()
+ "', remark = '" + remark.getText() + "' where filmID = '"
+ ID.getText() + "'";
try
{
FilmHireSystem.tableModel.setAutoCommit(false);
FilmHireSystem.tableModel.setExecute(str, query);
int n = Integer.parseInt(number.getText());
if(n > num)
{
for (int i = num + 1; i<=n; i++)
{
str = "insert into CDs (CDno, filmID) values ('" + i + "', '" + ID.getText() + "')";
FilmHireSystem.tableModel.setExecute(str, query);
}
}
else if(n < num)
{
str = "delete from CDs where CDno > " + n + " and filmID = '" + ID.getText() + "'";
FilmHireSystem.tableModel.setExecute(str, query);
}
FilmHireSystem.tableModel.commit();
}
catch(SQLException sql)
{
JOptionPane.showMessageDialog(null, sql.getMessage(),
"数据库查询错误", JOptionPane.ERROR_MESSAGE);
FilmHireSystem.tableModel.rollback();
}
FilmHireSystem.tableModel.setAutoCommit(true);
queryFilm(true);
showInfo(row);
table.setRowSelectionInterval(row, row);
}
}
}
}
);
workPanel.add(changeButton);
showCDButton = new JButton("显示碟片编号");
showCDButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
if(event.getActionCommand().equals("显示碟片编号"))
{
showCDButton.setText("显示影片");
newButton.setEnabled(false);
changeButton.setEnabled(false);
queryFilm(false);
table.setCellSelectionEnabled(false);
}
else
{
showCDButton.setText("显示碟片编号");
newButton.setEnabled(true);
changeButton.setEnabled(true);
queryFilm(true);
table.setRowSelectionInterval(0, 0);
showInfo(0);
table.setRowSelectionAllowed(true);
}
}
}
);
workPanel.add(showCDButton);
cancelButton = new JButton("取消");
cancelButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
newButton.setText("我要添加影片");
newButton.setEnabled(true);
changeButton.setText("我要修改信息");
changeButton.setEnabled(true);
table.setRowSelectionAllowed(true);
cancelButton.setEnabled(false);
if(table.getRowCount() > 0 && table.getSelectedRow() != -1)showInfo(table.getSelectedRow());
setState(false);
}
}
);
workPanel.add(cancelButton);
add(workPanel, BorderLayout.CENTER);
queryFilm(true);
table = new JTable(FilmHireSystem.tableModel);
table.getTableHeader().setReorderingAllowed(false);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.setRowSelectionAllowed(true);
table.addMouseListener(
new MouseAdapter()
{
public void mouseReleased(MouseEvent event)
{
if(table.getRowSelectionAllowed())
{
showInfo(table.getSelectedRow());
}
}
}
);
add(new JScrollPane(table), BorderLayout.SOUTH);
setState(add);
}
private void queryFilm(boolean film)
{
try
{
if(film) FilmHireSystem.tableModel.setQuery(query);
else
{
String id = ID.getText();
FilmHireSystem.tableModel.setQuery("select filmName 影片名, CDno 集号, CDID 碟片编号, CDs.state 状态 "
+ "from films join CDs on films.filmID = CDs.filmID where films.filmID = '" + id + "'");
}
}
catch(Exception exception)
{
JOptionPane.showMessageDialog(null, exception.getMessage());
System.err.println("数据库查询错误:" + exception.getMessage());
}
}
public void setState(boolean add)
{
if(add)
{
ID.setText("");
film.setText("");
film.setEditable(true);
type.setEnabled(true);
number.setText("");
number.setEditable(true);
country.setText("");
country.setEditable(true);
times.setText("0");
times.setEditable(false);
players.setText("");
players.setEditable(true);
remark.setText("");
remark.setEditable(true);
newButton.setText("确定");
changeButton.setEnabled(false);
showCDButton.setEnabled(false);
table.setCellSelectionEnabled(false);
}
else
{
if(table.getRowCount() > 0 && table.getSelectedRow() == -1)
{
showInfo(0);
table.setRowSelectionInterval(0, 0);
}
table.setRowSelectionAllowed(true);
film.setEditable(false);
type.setEnabled(false);
number.setEditable(false);
country.setEditable(false);
times.setEditable(false);
players.setEditable(false);
remark.setEditable(false);
if(table.getRowCount() > 0 && table.getSelectedRow() != -1)
showCDButton.setEnabled(true);
cancelButton.setEnabled(false);
}
}
private void showInfo(int index)
{
ID.setText(table.getValueAt(index, 0).toString());
film.setText(table.getValueAt(index, 1).toString());
type.setSelectedItem(table.getValueAt(index, 2).toString());
number.setText(table.getValueAt(index, 3).toString());
country.setText(table.getValueAt(index, 4).toString());
times.setText(table.getValueAt(index, 5).toString());
players.setText(table.getValueAt(index, 6).toString());
remark.setText(table.getValueAt(index, 7).toString());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -