📄 mainfrm.java
字号:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;
import java.sql.*;
public class MainFrm extends JFrame{
JPanel p;
BorderLayout borderLayout1=new BorderLayout();
GridLayout gridLayout1=new GridLayout(11,1,4,4);
JSplitPane jSplitPanel=new JSplitPane();
JPanel jPanel1=new JPanel();
JPanel jPanel2=new JPanel();
JLabel jLabel1=new JLabel();
JLabel jLabel2=new JLabel();
JButton jButton1=new JButton();
JButton jButton2=new JButton();
JButton jButton3=new JButton();
JButton jButton4=new JButton();
JButton jButton5=new JButton();
JButton jButton6=new JButton();
JComboBox jComboBox1=new JComboBox();
JComboBox jComboBox2=new JComboBox();
JTextField jTextField1=new JTextField();
JScrollPane jScrollPane1=new JScrollPane();
JTable jTable1=new JTable(new MyTableModel());
Connection con;
Statement stmt;
Vector columnData=new Vector();
Vector rowData=new Vector();
//构造函数
public MainFrm(){
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try{
jbInit();
}
catch(Exception e){
e.printStackTrace();
}
}
//画出整个界面
private void jbInit()throws Exception{
p=new JPanel();
p.setLayout(borderLayout1);
this.getContentPane().add(p);
this.setSize(new Dimension(700,405));
this.setTitle("影片管理系统");
jPanel1.setLayout(gridLayout1);
jLabel1.setText(" 搜索项");
jLabel2.setText(" 排序项");
jButton1.setText("搜索");
jButton1.setToolTipText("搜索影片");
jButton1.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
jButton1_actionPerformed(e);
}
});
jButton2.setText("全部显示");
jButton2.setToolTipText("显示数据库中所有影片");
jButton2.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
jButton2_actionPerformed(e);
}
});
jButton3.setText("增加");
jButton3.setToolTipText("增加影片");
jButton3.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
jButton3_actionPerformed(e);
}
});
jButton4.setText("删除");
jButton4.setToolTipText("删除影片");
jButton4.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
jButton4_actionPerformed(e);
}
});
jButton5.setText("修改");
jButton5.setToolTipText("修改影片");
jButton5.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
jButton5_actionPerformed(e);
}
});
jButton6.setText("排序");
jButton6.setToolTipText("影片排序");
jButton6.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
jButton6_actionPerformed(e);
}
});
p.add(jPanel1,"West");
jPanel1.add(jLabel1);
jPanel1.add(jComboBox1);
jPanel1.add(jTextField1);
jPanel1.add(jButton1);
jPanel1.add(jButton2);
jPanel1.add(jButton3);
jPanel1.add(jButton4);
jPanel1.add(jButton5);
jPanel1.add(jLabel2);
jPanel1.add(jComboBox2);
jPanel1.add(jButton6);
p.add(jScrollPane1,"Center");
jScrollPane1.getViewport().add(jTable1,null);
jComboBox1.addItem("影片名称");
jComboBox1.addItem("出品时间");
jComboBox1.addItem("播放介质");
jComboBox1.addItem("影片类型");
jComboBox1.addItem("影片导演");
jComboBox1.addItem("出品国家");
jComboBox1.addItem("影片影员");
columnData.addElement("影片名称");
columnData.addElement("出品时间");
columnData.addElement("播放介质");
columnData.addElement("影片类型");
columnData.addElement("影片导演");
columnData.addElement("出品国家");
columnData.addElement("影片影员");
jComboBox2.addItem("影片名称");
jComboBox2.addItem("出品时间");
jComboBox2.addItem("播放介质");
jComboBox2.addItem("影片类型");
jComboBox2.addItem("影片导演");
jComboBox2.addItem("出品国家");
jComboBox2.addItem("影片影员");
DefaultTableModel model=(DefaultTableModel)jTable1.getModel();
model.setDataVector(rowData,columnData);
TableColumn column;
column=jTable1.getColumn("影片名称");
column.setMinWidth(100);
column=jTable1.getColumn("出品时间");
column.setMinWidth(60);
column=jTable1.getColumn("播放介质");
column.setMinWidth(60);
column=jTable1.getColumn("影片类型");
column.setMinWidth(100);
column=jTable1.getColumn("影片导演");
column.setMinWidth(80);
column=jTable1.getColumn("出品国家");
column.setMinWidth(80);
column=jTable1.getColumn("影片影员");
column.setMinWidth(80);
jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent e){
if(jTable1.getSelectedRow()!=-1){
jButton4.setEnabled(true);
jButton5.setEnabled(true);
}
}
});
String url="jdbc:odbc:Movie";
String username = "anonymous";
String password = "guest";
//加载JDBC-ODBC桥驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//创建数据库连接
con=DriverManager.getConnection(url, username, password);
stmt=con.createStatement();
//在打开之处就将整个数据库文件内容显示
String sql="SELECT * FROM movie";
update(sql);
}
//关闭窗口
protected void processWindowEvent(WindowEvent e){
super.processWindowEvent(e);
if(e.getID()==WindowEvent.WINDOW_CLOSING){
System.exit(0);
}
}
//搜索按钮的触发事件
void jButton1_actionPerformed(ActionEvent e){
int n=jComboBox1.getSelectedIndex();
String value=jTextField1.getText().trim();
String columnName=getColumnName(n);
String sql="";
if(columnName!=null){
if(columnName=="name"){
sql="SELECT * FROM movie WHERE name='"+value+"'";
}
else if(columnName=="time"){
sql="SELECT * FROM movie WHERE time='"+value+"'";
}
else if(columnName=="gener"){
sql="SELECT * FROM movie WHERE gener='"+value+"'";
}
else if(columnName=="format"){
sql="SELECT * FROM movie WHERE format='"+value+"'";
}
else if(columnName=="director"){
sql="SELECT * FROM movie WHERE director='"+value+"'";
}
else if(columnName=="country"){
sql="SELECT * FROM movie WHERE country='"+value+"'";
}
else if(columnName=="actor"){
sql="SELECT * FROM movie WHERE actor='"+value+"'";
}
update(sql);
jButton4.setEnabled(false);
jButton5.setEnabled(false);
}
else{
return;
}
}
//全部显示按钮的触发事件
void jButton2_actionPerformed(ActionEvent e){
String sql="SELECT * FROM movie";
update(sql);
jButton4.setEnabled(false);
jButton5.setEnabled(false);
}
//增加按钮的触发事件
void jButton3_actionPerformed(ActionEvent e){
InputDlg dlg=new InputDlg(this,"添加记录",true);
int x=getX()+getWidth()/2-dlg.getWidth()/2;
int y=getY()+getHeight()/2-dlg.getHeight()/2;
dlg.setLocation(x,y);
dlg.show();
}
//删除按钮的触发事件
void jButton4_actionPerformed(ActionEvent e){
int n=jComboBox1.getSelectedIndex();
String name=(String)jTable1.getValueAt(n,0);
String sql="DELETE FROM movie WHERE name='"+name+"'";
try{
stmt.executeUpdate(sql);
}
catch(SQLException ev){
System.out.println(ev.getMessage());
}
DefaultTableModel model=(DefaultTableModel)jTable1.getModel();
model.removeRow(n);
jButton4.setEnabled(false);
jButton5.setEnabled(false);
}
//修改按钮的触发事件
void jButton5_actionPerformed(ActionEvent e){
String data[]=new String[7];
int r=jTable1.getSelectedRow();
for(int i=0;i<7;i++){
data[i]=(String)jTable1.getValueAt(r,i);
}
InputDlg dlg=new InputDlg(this,"修改记录",true,data);
int x=getX()+getWidth()/2-dlg.getWidth()/2;
int y=getY()+getHeight()/2-dlg.getHeight()/2;
dlg.setLocation(x,y);
dlg.show();
}
//排序按钮的触发事件
void jButton6_actionPerformed(ActionEvent e){
String sql="";
int n=jComboBox2.getSelectedIndex();
String columnName=getColumnName(n);
if(columnName!=null){
if(columnName=="name"){
sql="SELECT * FROM movie ORDER BY name";
}
else if(columnName=="time"){
sql="SELECT * FROM movie ORDER BY time";
}
else if(columnName=="gener"){
sql="SELECT * FROM movie ORDER BY gener";
}
else if(columnName=="format"){
sql="SELECT * FROM movie ORDER BY format";
}
else if(columnName=="director"){
sql="SELECT * FROM movie ORDER BY director";
}
else if(columnName=="country"){
sql="SELECT * FROM movie ORDER BY country";
}
else if(columnName=="actor"){
sql="SELECT * FROM movie ORDER BY actor";
}
update(sql);
jButton4.setEnabled(false);
jButton5.setEnabled(false);
}
}
//取下拉框中各对应的名称
String getColumnName(int index){
if(index==0){
return "name";
}
else if(index==1){
return "time";
}
else if(index==2){
return "gener";
}
else if(index==3){
return "format";
}
else if(index==4){
return "director";
}
else if(index==5){
return "country";
}
else if(index==6){
return "actor";
}
else{
return null;
}
}
//增加影片
void addRecord(String data[]){
String sql="INSERT INTO movie VALUES('"+data[0]+"'";
for(int i=1;i<7;i++){
sql+=",'"+data[i]+"'";
}
sql+=")";
try{
stmt.executeUpdate(sql);
}
catch(SQLException e){
System.out.println(e.getMessage());
return;
}
DefaultTableModel model=(DefaultTableModel)jTable1.getModel();
model.addRow(data);
}
//编辑影片
void editRecord(String data[]){
int n=jComboBox1.getSelectedIndex();
String name=(String)jTable1.getValueAt(n,0);
String sql="DELETE FROM movie WHERE name='"+name+"'";
try{
stmt.executeUpdate(sql);
}
catch(SQLException ev){
System.out.println(ev.getMessage());
}
DefaultTableModel model=(DefaultTableModel)jTable1.getModel();
model.removeRow(n);
addRecord(data);
}
//修改影片
void update(String sql){
DefaultTableModel model=(DefaultTableModel)jTable1.getModel();
int count=jTable1.getRowCount();
for(int i=0;i<count;i++){
model.removeRow(0);
}
try{
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){
String name=rs.getString(1).trim();
String time=rs.getString(2).trim();
String gener=rs.getString(3).trim();
String format=rs.getString(4).trim();
String director=rs.getString(5).trim();
String country=rs.getString(6).trim();
String actor=rs.getString(7).trim();
String row[]={name,time,gener,format,director,country,actor};
model.addRow(row);
}
}
catch(SQLException e){
System.out.println(e.getMessage());
}
}
class MyTableModel extends DefaultTableModel{
public boolean isCellEditable(int r,int c){
return false;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -