📄 objtab.java
字号:
//Vedio rental System Developed by Banu
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.JTextField;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Calendar;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.sql.SQLException;
public class objTab extends JPanel implements ActionListener
{
private String strTable = "",mode;
private JButton cmdSave,cmdSearch;
private JLabel lblTitle, lblYear, lblFN,lblLN,lblAdd,lblPh, lblGnre, lblProducer,lblCID, lblVID, lblDue,lblHint,lblRID,lblStatus;
private JPanel panTitle, panYear, panStatus, panSearch, panFN,panLN,panAdd,panPh,panGnre,panProducer, panCID,panVID, panDue ;
private JTextField txtTitle, txtYear, txtFN,txtLN, txtAdd,txtPh,txtGnre, txtProducer,txtCID,txtVID,txtRID,txtDue;
private JTable selectedTable;
private Connection databaseConnection;
public objTab (String strTable,Connection databaseConnection, String mode)
{
this.strTable = strTable;
this.mode =mode;
this.databaseConnection = databaseConnection;
if (mode.equalsIgnoreCase("View") || mode.equalsIgnoreCase("Report") )
try{
drawTable();
}
catch(SQLException ex)
{
System.out.println("reached catch block of objTab ");
JOptionPane.showMessageDialog(null, ex.getMessage(), "Database Access Error", JOptionPane.ERROR_MESSAGE);
}
else if (mode.equalsIgnoreCase("Edit"))
{
cmdSave = new JButton("Update");
lblStatus = new JLabel("Find the record first for edit", JLabel.CENTER);
editMode();
}
else if (mode.equalsIgnoreCase("New"))
{
newMode();
}
else if (mode.equalsIgnoreCase("Delete"))
{
cmdSave = new JButton("Delete");
lblStatus = new JLabel("Find the record first for Delete", JLabel.CENTER);
editMode();
}
}
public void editMode()
{
cmdSearch = new JButton("Search");
cmdSearch.addActionListener(this);
cmdSave.addActionListener(this);
//before drawing the input mode find the avialability of the record in the table.
if (strTable.equalsIgnoreCase("Customer"))
{
findCustomer();
}
else if (strTable.equalsIgnoreCase("Vedio"))
{
findVedio();
}
else if (strTable.equalsIgnoreCase("Rental"))
{
findRent();
}
}
public void newMode()
{
cmdSave = new JButton("Save");
lblStatus = new JLabel("Enter data and click Save", JLabel.CENTER);
cmdSave.addActionListener(this);
if (strTable.equalsIgnoreCase("Customer"))
inputCustomer();
else if (strTable.equalsIgnoreCase("Vedio"))
inputVedio();
else if (strTable.equalsIgnoreCase("Rental"))
{
inputRental();
System.out.println("input labels sucess");}
}
public void inputCustomer()
{
//cmdSave = new JButton("Save");
//cmdSave.addActionListener(this);
lblFN = new JLabel("First Name ", JLabel.RIGHT);
lblLN = new JLabel("Last Name ", JLabel.RIGHT);
lblAdd = new JLabel("Address ", JLabel.RIGHT);
lblPh = new JLabel("Phone No ", JLabel.RIGHT);
txtFN = new JTextField("", 15);
txtLN = new JTextField("", 15);
txtAdd = new JTextField("", 35);
txtPh = new JTextField("", 15);
panFN = new JPanel();
panLN = new JPanel();
panAdd = new JPanel();
panPh = new JPanel();
panStatus = new JPanel();
this.setLayout(new GridLayout(5, 1));
this.add(panFN);
panFN.add(lblFN);
panFN.add(txtFN);
this.add(panLN);
panLN.add(lblLN);
panLN.add(txtLN);
this.add(panAdd);
panAdd.add(lblAdd);
panAdd.add(txtAdd);
this.add(panPh);
panPh.add(lblPh);
panPh.add(txtPh);
this.add(panStatus);
panStatus.add(cmdSave);
panStatus.add(lblStatus);
}
public void inputVedio()
{
lblTitle = new JLabel("Title ", JLabel.RIGHT);
lblYear = new JLabel("Year ", JLabel.RIGHT);
lblGnre = new JLabel("Genre ", JLabel.RIGHT);
lblProducer = new JLabel("Producer ", JLabel.RIGHT);
txtTitle = new JTextField("", 25);
txtYear = new JTextField("", 15);
txtGnre = new JTextField("", 15);
txtProducer = new JTextField("", 20);
panTitle = new JPanel();
panYear = new JPanel();
panGnre = new JPanel();
panProducer = new JPanel();
panStatus = new JPanel();
this.setLayout(new GridLayout(5, 1));
this.add(panTitle);
panTitle.add(lblTitle);
panTitle.add(txtTitle);
this.add(panYear);
panYear.add(lblYear);
panYear.add(txtYear);
this.add(panGnre);
panGnre.add(lblGnre);
panGnre.add(txtGnre);
this.add(panProducer);
panProducer.add(lblProducer);
panProducer.add(txtProducer);
this.add(panStatus);
panStatus.add(cmdSave);
panStatus.add(lblStatus);
}
public void inputRental()
{
lblCID = new JLabel("Customer ID ", JLabel.RIGHT);
lblVID = new JLabel("Vedio ID ", JLabel.RIGHT);
lblDue = new JLabel("Due Date (DD-MM-YYYY) ", JLabel.RIGHT);
lblAdd = new JLabel("By default 2 days after is Set", JLabel.RIGHT);
txtCID = new JTextField("", 10);
txtVID = new JTextField("", 10);
txtDue = new JTextField("", 12);
panCID = new JPanel();
panVID = new JPanel();
panDue = new JPanel();
panStatus = new JPanel();
Calendar calNow = Calendar.getInstance();
Calendar calDue = Calendar.getInstance();
calDue.add(Calendar.DATE,3);
if ( calDue.get(Calendar.DATE)< calNow.get(Calendar.DATE))
calDue.add(Calendar.MONTH,1);
if ( calDue.get(Calendar.MONTH)< calNow.get(Calendar.MONTH))
calDue.add(Calendar.YEAR,1);
String date;
date = Integer.toString(calDue.get(Calendar.DATE));
date +="-";
date +=Integer.toString(calDue.get(Calendar.MONTH));
date +="-";
date +=Integer.toString(calDue.get(Calendar.YEAR));
txtDue.setText(date);
this.setLayout(new GridLayout(4, 1));
System.out.println("Passed layout");
this.add(panCID);
panCID.add(lblCID);
panCID.add(txtCID);
this.add(panVID);
panVID.add(lblVID);
panVID.add(txtVID);
this.add(panDue);
panDue.add(lblDue);
panDue.add(txtDue);
panDue.add(lblAdd);
System.out.println("Passed PanDue");
this.add(panStatus);
panStatus.add(cmdSave);
panStatus.add(lblStatus);
System.out.println("In the input rent method finished");
}
public void findCustomer()
{
lblCID = new JLabel("Customer ID ", JLabel.RIGHT);
txtCID = new JTextField("", 10);
lblHint = new JLabel ("search record with the respective ID for editing.", JLabel.RIGHT);
panSearch = new JPanel();
this.setLayout(new GridLayout(6, 1));
this.add(panSearch);
panSearch.add(lblCID);
panSearch.add(txtCID);
panSearch.add(cmdSearch);
panSearch.add(lblHint);
}
public void findVedio()
{
lblVID = new JLabel("Vedio ID ", JLabel.RIGHT);
txtVID = new JTextField("", 10);
lblHint = new JLabel ("search record with the respective ID for editing.", JLabel.RIGHT);
panSearch = new JPanel();
this.setLayout(new GridLayout(6, 1));
this.add(panSearch);
panSearch.add(lblVID);
panSearch.add(txtVID);
panSearch.add(cmdSearch);
panSearch.add(lblHint);
}
public void findRent()
{
lblRID = new JLabel("Rent No ", JLabel.RIGHT);
txtRID = new JTextField("", 10);
lblHint = new JLabel ("search record with the respective ID for editing.", JLabel.RIGHT);
panSearch = new JPanel();
this.setLayout(new GridLayout(5, 1));
this.add(panSearch);
panSearch.add(lblRID);
panSearch.add(txtRID);
panSearch.add(cmdSearch);
panSearch.add(lblHint);
}
public void drawTable() throws SQLException
{
Statement s = databaseConnection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSetMetaData rsmd = null;
ResultSet result;
String[] col;
String[][] rows;
Calendar calNow = Calendar.getInstance();
String date;
date = Integer.toString(calNow.get(Calendar.DATE));
date +="-";
date +=Integer.toString(calNow.get(Calendar.MONTH));
date +="-";
date +=Integer.toString(calNow.get(Calendar.YEAR));
if (mode.equalsIgnoreCase("Report"))
{
System.out.println("Reached selection for overdues");
s.execute("Select * from Rental where DueDate > " + date );
System.out.println("Finished selection for overdues");
}
else
s.execute("select * from " + strTable);
result = s.getResultSet();
System.out.println("Query executed");
rsmd= result.getMetaData();
col = new String [rsmd.getColumnCount()];
rows= new String [25][rsmd.getColumnCount()];
for (int i = 0; i<rsmd.getColumnCount(); i++)
{
col[i]=rsmd.getColumnLabel(i+1);
}
boolean exist = result.next();
if (!exist)
throw new SQLException("No records found in " + strTable);
else
{
result.first();
int r=0;
do{
for (int c =0; c < rsmd.getColumnCount(); c++)
{
rows[r][c] = result.getString(c+1);
}
r++;
}while (result.next());
selectedTable = new JTable(rows, col);
selectedTable.setPreferredScrollableViewportSize(new Dimension(500, 70));
this.add(selectedTable.getTableHeader());
this.setLayout(new GridLayout(2,1));
this.add(selectedTable);
}
}
private int getYear () throws NumberFormatException
{
int year = 0;
try
{
year = Integer.parseInt(txtYear.getText());
}
catch (NumberFormatException ex)
{
throw new NumberFormatException("The entered year is not a legal numeric value");
}
Calendar calNow = Calendar.getInstance();
int currentYear = calNow.get(Calendar.YEAR);
if (year < 1900 || year > currentYear)
{
throw new NumberFormatException("The year must be between 1900 and " + currentYear);
}
return year;
}
private void saveRecord () throws SQLException
{
Statement s = databaseConnection.createStatement();
System.out.println("Save record mode " + mode);
if (mode.equalsIgnoreCase("Edit")){
// code for update the requested table
}
else if (mode.equalsIgnoreCase("New"))// code that insert new reord into requested table
{
String insert;
System.out.println("Entered to new record insert block");
try
{
if (strTable.equalsIgnoreCase("Customer"))
{
if(validCustomer())
{
insert = "insert into " + strTable
+ " (FirstName,LastName,Address,PhNo)"
+ " values ('"
+ txtFN.getText()
+ "', '"
+ txtLN.getText()
+ "', '"
+ txtAdd.getText()
+ "', '"
+ txtPh.getText()
+ "')";
//test point, can be removed
System.out.println(insert);
s.execute(insert);
txtFN.setText(""); txtLN.setText(""); txtAdd.setText("");
txtPh.setText(""); txtFN.requestFocus();
lblStatus.setText("Customer saved successfully");
}
}
else if (strTable.equalsIgnoreCase("Vedio"))
{
// code to insert vedio record
if(validVideo())
{
insert = "insert into " + strTable
+ " (Title,Year,Genre,Producer)"
+ " values ('"
+ txtTitle.getText()
+ "', '"
+ txtYear.getText()
+ "', '"
+ txtGnre.getText()
+ "', '"
+ txtProducer.getText()
+ "')";
System.out.println(insert);
s.execute(insert);
txtTitle.setText(""); txtYear.setText("");
txtGnre.setText(""); txtProducer.setText("");
lblStatus.setText("Video saved successfully");
}
}
else if (strTable.equalsIgnoreCase("Rental"))
{
// code to insert Rental record
if (validRent())
{
insert = "insert into " + strTable
+ " (CID,VID,DueDate)"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -