Payment

JFrame frame = new JFrame("Payment");
Utils.centeredFrame(frame, winWidth, winHeight, "Payment");
frame.setResizable(false);
Container mainContainer=frame.getContentPane();
mainContainer.setBackground(Color.gray);
int panelWid = winWidth-winWidth/20;
int panelHig = winHeight-winHeight/10;
JPanel panel = new JPanel();
panel.setLayout(null);
panel.setOpaque(false);
panel.setBackground(Color.white);
panel.setSize(new Dimension(winWidth-winWidth/20,winHeight-winHeight/10));
panel.setLocation(winWidth/50,winHeight/40);
mainContainer.add(panel,BorderLayout.CENTER);
After creation of window, we will add a canvas background.
JComponent jcomponent=new Background(winWidth/50,winHeight/40,(winWidth-winWidth/20),winHeight-winHeight/10);
mainContainer.add(jcomponent,BorderLayout.CENTER);
public class Background extends JComponent {
int width, height,setX,setY;
public Background (int setX,int setY,int width, int height) {
this.width=width;
this.height=height;
this.setX=setX;
this.setY=setY;
setSize(width, height);
}
@Override
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(Color.white);
double x = setX;
double y = setY;
double w = width;
double h = height;
RoundRectangle2D round=new RoundRectangle2D.Double(x, y, w, h, 80, 80);
g2.fill(round);
}
}
Once your window is created with custom background, Here we Create Header.
// for heading Layout
heading = new JLabel("Payment");
heading.setHorizontalAlignment(JLabel.CENTER);
heading.setVerticalAlignment(JLabel.CENTER);
heading.setBackground(Color.decode("#80c2b2"));
heading.setForeground(Color.black);
heading.setFont(headingFont);
heading.setBounds(0,panelHig/30, panelWid, panelHig/15);
panel.add(heading);
JSeparator jSeparator1 = new JSeparator();
jSeparator1.setBackground(Color.black);
jSeparator1.setAlignmentX(JSeparator.CENTER_ALIGNMENT);
jSeparator1.setBounds(20, 80, winWidth-winWidth/12, panelHig/13);
panel.add(jSeparator1);
Now we will create layouts with some reduced dimensions.
leftside = Utils.createPanel(winWidth/3,winHeight*7/10,new Point(winWidth/50,winHeight/6), true,"Action");
panel.add(leftside,BorderLayout.NORTH);
leftside.setLayout(null);
rightside = Utils.createPanel(winWidth*57/100,winHeight*7/10,new Point(winWidth/3+winWidth/30,winHeight/6), true,"Payment Details");
panel.add(rightside,BorderLayout.WEST);
rightside.setLayout(null);
JLabel room_label =new JLabel();
room_label.setText("Room No :");
room_label.setForeground(Color.black);
room_label.setFont(new Font("Lucida",Font.PLAIN,12));
room_label.setSize(new Dimension(winWidth/3,winHeight/10));
room_label.setLocation(60, 30);
leftside.add(room_label);
ArrayList room_list = new ArrayList();
room_list.add("Select");
//----------- Getting room data ------
Connection conn = SQLiteJDBCDriverConnection.connect1();
try {
PreparedStatement insert = conn.prepareStatement("select room_no from room");
ResultSet rs = insert.executeQuery();
while(rs.next()) {
room_list.add(rs.getString("room_no"));
}
conn.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
room_no_combo = new JComboBox(room_list.toArray());
room_no_combo.setBounds(60, 80, 300, 30);
room_no_combo.setBackground(Color.WHITE);
room_no_combo.setFont(new Font("Lucida",Font.PLAIN,12));
room_no_combo.setSelectedIndex(0);
leftside.add(room_no_combo);
JLabel paid_for_label =new JLabel();
paid_for_label.setText("Paid for :");
paid_for_label.setForeground(Color.black);
paid_for_label.setFont(new Font("Lucida",Font.PLAIN,12));
paid_for_label.setSize(new Dimension(winWidth/3,winHeight/10));
paid_for_label.setLocation(60, 105);
leftside.add(paid_for_label);
String s2[] = { "Select", "January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December" };
month_combo = new JComboBox(s2);
month_combo.setBounds(60, 155, 300, 30);
month_combo.setBackground(Color.WHITE);
month_combo.setFont(new Font("Lucida",Font.PLAIN,12));
month_combo.setSelectedIndex(0);
leftside.add(month_combo);
month_combo.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED) {
selected_month = month_combo.getSelectedItem().toString();
}
}
});
Name and amount in Payment UI.
Border loweredetched = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
TitledBorder amounttittle = BorderFactory.createTitledBorder(loweredetched, "Amount");
amounttittle.setTitleJustification(TitledBorder.LEFT);
TitledBorder nametittle = BorderFactory.createTitledBorder(loweredetched, "Student Name");
nametittle.setTitleJustification(TitledBorder.LEFT);
amount = new JTextField();
amount.setSize(new Dimension(300,winHeight/15));
amount.setLocation(60,225);
amount.setBorder(amounttittle);
amount.setVisible(true);
leftside.add(amount);
std_name = new JTextField();
std_name.setSize(new Dimension(300,winHeight/15));
std_name.setLocation(60,325);
std_name.setBorder(nametittle);
std_name.setVisible(true);
leftside.add(std_name);
JButton addButton = new JButton(new ImageIcon(((new ImageIcon("images/button32.png")).getImage()).getScaledInstance(200, 50, java.awt.Image.SCALE_SMOOTH)));
addButton.setText("Pay");
addButton.setContentAreaFilled(false);
addButton.setBorder(null);
addButton.setForeground(Color.white);
addButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
addButton.setHorizontalTextPosition(JButton.CENTER);
addButton.setVerticalTextPosition(JButton.CENTER);
addButton.setFont(new Font("Lucida",Font.PLAIN,16));
addButton.setBounds(110,450, 200, 50);
leftside.add(addButton);
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
String var = "";
String name = "";
String rent = "";
String date = Utils.getDate("yyyy-MM-dd");
Boolean is_month_entered = false;
Boolean is_name_entered = false;
Boolean is_amount_entered = false;
if(month_combo.getSelectedItem().toString().equalsIgnoreCase("Select")){
var += "Select Month, ";
}else {
is_month_entered = true;
}
if(std_name.getText().equalsIgnoreCase("") || std_name.getText().equalsIgnoreCase(" ")){
var += "Name Should not be empty, ";
}else {
name = std_name.getText();
is_name_entered = true;
}
if(amount.getText().equalsIgnoreCase("") || amount.getText().equalsIgnoreCase(" ")){
var += "Amount Should not be empty, ";
}else {
rent = amount.getText();
is_amount_entered = true;
}
Connection conn = SQLiteJDBCDriverConnection.connect1();
if(is_month_entered && is_name_entered && is_amount_entered) {
try {
PreparedStatement insert = conn.prepareStatement("insert into rent_payment(room_number, paid_for,
paid_by, paid_date_time, paid_amount) VALUES(?,?,?,?,?)");
insert.setString(1, selected_room_no);
insert.setString(2, selected_month);
insert.setString(3, name);
insert.setString(4, date);
insert.setString(5, rent);
insert.executeUpdate();
JOptionPane.showMessageDialog(null, "Payment successfully");
payment_table_update(selected_room_no);
amount.setText("");
std_name.setText("");
month_combo.setSelectedIndex(0);
room_no_combo.setSelectedIndex(0);
conn.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}else {
JOptionPane.showMessageDialog(null, var,"Error message", JOptionPane.ERROR_MESSAGE);
}
}
});
Now we add Payment history table when selected room from combobox.
payment_table();
room_no_combo.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED) {
selected_room_no = room_no_combo.getSelectedItem().toString();
get_data(selected_room_no);
payment_table_update(selected_room_no);
}
}
});
private void payment_table() {
// TODO Auto-generated method stub
String[] columnNames = {"Room No","Paid for","Paid By",
"Paid Date","Paid Amount"};
DefaultTableModel model = new DefaultTableModel();
model.setRowCount(0);
model.setColumnIdentifiers(columnNames);
paymentTable = new JTable();
paymentTable.setBounds(15,90, winWidth*55/100, winHeight*7/15);
paymentTable.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
rightside.add(paymentTable);
paymentTable.setModel(model);
JScrollPane scrollPane = new JScrollPane(paymentTable);
scrollPane.setBounds(15,90, winWidth*55/100,winHeight*7/15);
paymentTable.setFillsViewportHeight(true);
rightside.add(scrollPane);
DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setHorizontalAlignment( JLabel.CENTER );
paymentTable.getColumnModel().getColumn(0).setCellRenderer( centerRenderer );
paymentTable.getColumnModel().getColumn(1).setCellRenderer( centerRenderer );
paymentTable.getColumnModel().getColumn(2).setCellRenderer( centerRenderer );
paymentTable.getColumnModel().getColumn(3).setCellRenderer( centerRenderer );
paymentTable.getColumnModel().getColumn(4).setCellRenderer( centerRenderer );
paymentTable.getTableHeader().setFont(new Font("SansSerif", 1, 13));
paymentTable.getTableHeader().setBackground(Color.decode("#4287f5"));
paymentTable.getTableHeader().setForeground(Color.decode("#FFFFFF"));
paymentTable.getColumnModel().getColumn(0).setPreferredWidth(30);
paymentTable.getColumnModel().getColumn(4).setPreferredWidth(30);
paymentTable.getColumnModel().getColumn(2).setPreferredWidth(40);
paymentTable.setRowHeight(30);
}
Here's logic of get selected room data.
private void get_data(String room_no) {
amount.setText("");
std_name.setText("");
Connection conn = SQLiteJDBCDriverConnection.connect1();
try {
PreparedStatement insert = conn.prepareStatement("select room_rent from room where room_no IS ?");
insert.setString(1, room_no);
ResultSet rs = insert.executeQuery();
while(rs.next()) {
amount.setText(rs.getString("room_rent"));
}
conn.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
conn = SQLiteJDBCDriverConnection.connect1();
try {
PreparedStatement insert = conn.prepareStatement("select alloted_to from room_alloted where room_number IS ?");
insert.setString(1, room_no);
ResultSet rs = insert.executeQuery();
while(rs.next()) {
insert = conn.prepareStatement("select student_name from student where student_id IS ?");
insert.setString(1, rs.getString("alloted_to"));
ResultSet rs0 = insert.executeQuery();
while(rs0.next()) {
std_name.setText(rs0.getString("student_name"));
}
}
conn.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
Here is logic for update payment table.
private void payment_table_update(String room_no) {
Connection conn = SQLiteJDBCDriverConnection.connect1();
try {
PreparedStatement insert = conn.prepareStatement("select room_number, paid_for, paid_by, paid_date_time, paid_amount from rent_payment where room_number IS ?");
insert.setString(1, room_no);
ResultSet rs = insert.executeQuery();
DefaultTableModel dft = (DefaultTableModel)paymentTable.getModel();
dft.setRowCount(0);
dft.fireTableDataChanged();
while(rs.next()) {
Vector v2 = new Vector();
v2.add(rs.getString("room_number"));
v2.add(rs.getString("paid_for"));
v2.add(rs.getString("paid_by"));
v2.add(rs.getString("paid_date_time"));
v2.add(rs.getString("paid_amount"));
dft.addRow(v2);
}
conn.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
Here is logic dashboard visibility.
frame.getContentPane().setBackground(Color.gray);
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
frame.dispose();
dashboardFrame.setVisible(true);
}
});
frame.setVisible(true);
At last we add logic to table rows change their position.
public void tableChanged(TableModelEvent e) {
// TODO Auto-generated method stub
int row = e.getFirstRow();
int column = e.getColumn();
TableModel model = (TableModel)e.getSource();
String columnName = model.getColumnName(column);
Object data = model.getValueAt(row, column);
System.out.println(columnName+data+"Wrong");
}
Programmer Mirta is for learning and training. Projects might be simple to improve learning. Projects are constantly reviewed to avoid errors, but we cannot assure full correctness of all content. While using Programmer Mitra, you agree to have read and accepted our terms of use, cookie and privacy policy.
Copyright 2021 by Programmer Mitra. All Rights Reserved.