Room Allocate

Room Allocate

Above UI we are going to create by AWT for Room Allocate for Student in our Hostel management system desktop application. For that first we create a window and configure its title, size and color. Here we are creating a window at Top Level so we can add this window at the top of any other window.

    
		JFrame frame = new JFrame("Room Allocate");
		Utils.centeredFrame(frame, winWidth, winHeight, "Room Allocate");
		frame.setResizable(false);

        Container mainContainer=frame.getContentPane();
	    mainContainer.setBackground(Color.gray);

	        	

	    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.

    
    	int panelWid = winWidth-winWidth/20;
		int panelHig = winHeight-winHeight/10;
		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
		Font headingFont = new Font("Lucida",Font.BOLD,22);
	    Font textFont = new Font("Lucida",0,10);
	    Border borderline = BorderFactory.createLineBorder(Color.black);
	        
	        
	    heading = new JLabel("Room Allocate");
	    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);
        
    

We will create roompanel layout with some reduced dimensions and its UI.

    
    TitledBorder roomTittle = BorderFactory.createTitledBorder(borderline);
	roomTittle.setTitleJustification(TitledBorder.LEFT);
	roomTittle.setTitleFont(textFont);
	roomtTittle.setTitle("Search Room");
	roomTittle.setTitleColor(Color.black);

	roomPanel = new JPanel();
	roomPanel.setBounds(20,panelHig*15/100, winWidth*57/100, panelHig*42/100);//280
	roomPanel.setLayout(null);
	roomPanel.setName("Search Room");
	roomPanel.setBorder(roomTittle);
	roomPanel.setBackground(Color.white);
	panel.add(roomPanel);
	        
	        
	headingFont = new Font("Lucida",Font.BOLD,16);
	JLabel searchLabel = new JLabel("Search Room");
	searchLabel.setAlignmentX(JLabel.LEFT);
	searchLabel.setForeground(Color.black);
	searchLabel.setFont(headingFont);
	searchLabel.setBounds(20,10, 150, 30);
	roomPanel.add(searchLabel);
		    
	ImageIcon backround_img = new ImageIcon("images/ic_search.png");
	Image img = backround_img.getImage();
	Image temp_img = img.getScaledInstance(20, 20, Image.SCALE_SMOOTH);
	backround_img = new ImageIcon(temp_img);
	JLabel background = new JLabel("", backround_img, JLabel.CENTER);
	background.setBounds(20,40, 20, 20);
	roomPanel.add(background);
		    
	JTextField roomSearch = new JTextField(15);
	roomSearch.setBackground(Color.decode("#FFFFFF"));
	roomSearch.setForeground(Color.black);
	roomSearch.setBounds(40,40, 150, 20);
	roomPanel.add(roomSearch);
		   
	roomSearch.getDocument().addDocumentListener(new DocumentListener() {
	    @Override
		public void insertUpdate(DocumentEvent e) {
		    search(roomSearch.getText());
		}
		@Override
		public void removeUpdate(DocumentEvent e) {
		    search(roomSearch.getText());
		}
		@Override
		public void changedUpdate(DocumentEvent e) {
		    search(roomSearch.getText());
		}
		public void search(String str) {
		    if (str.length() == 0) {
		        sorter.setRowFilter(null);
		    } else {
		        sorter.setRowFilter(RowFilter.regexFilter(str));
		    }
		}
	});
		    
     
	room_table();
    

Here is our Room table:

    
    private void room_table() {		
			
		// TODO Auto-generated method stub
		String[] columnNames = {"Room No", "Price"};
			
		DefaultTableModel model = new DefaultTableModel();
		sorter = new TableRowSorter<>(model);

	    model.setColumnIdentifiers(columnNames); 
			
		roomTable = new JTable();
		roomTable.setRowSorter(sorter);
		roomTable.setBounds(20,70, 400, 200);
			
		roomPanel.add(roomTable);
		roomTable.setModel(model);

		JScrollPane scrollPane = new JScrollPane(roomTable);
		scrollPane.setBounds(20,70, 400,200);
		roomTable.setFillsViewportHeight(true);
		roomPanel.add(scrollPane);
			
		DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
		centerRenderer.setHorizontalAlignment( JLabel.CENTER );
		roomTable.getColumnModel().getColumn(0).setCellRenderer( centerRenderer );
		roomTable.getColumnModel().getColumn(1).setCellRenderer( centerRenderer );
			
			
		
		roomTable.getTableHeader().setFont(new Font("SansSerif", 1, 13));
		roomTable.getTableHeader().setBackground(Color.decode("#4287f5"));
		roomTable.getTableHeader().setForeground(Color.decode("#FFFFFF"));
			
		roomTable.getColumnModel().getColumn(0).setPreferredWidth(30);
		roomTable.getColumnModel().getColumn(1).setPreferredWidth(30);
		roomTable.setRowHeight(30);

			
		roomTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
			public void valueChanged(ListSelectionEvent event) {
			        	
			    DefaultTableModel dft = (DefaultTableModel)selectedroomTable.getModel();
				dft.setRowCount(0);
				Vector v2 = new Vector();
				v2.add(roomTable.getValueAt(roomTable.getSelectedRow(),0).toString());
				v2.add(roomTable.getValueAt(roomTable.getSelectedRow(),1).toString());

				dft.addRow(v2);
				selected_room_number = roomTable.getValueAt(roomTable.getSelectedRow(),0).toString();
			}
		
		});
			
			
			
		room_table_update();
		
	}
        

Here Student layout and its UI:

    
    	// Student table Base panel
		TitledBorder studentTittle = BorderFactory.createTitledBorder(borderline);
		studentTittle.setTitleJustification(TitledBorder.LEFT);
		studentTittle.setTitleFont(textFont);
		studentTittle.setTitle("Search Student");
		studentTittle.setTitleColor(Color.black);
		    
		studentPanel = new JPanel();
		studentPanel.setLayout(null);
		studentPanel.setBounds(20,panelHig*58/100, winWidth*57/100, panelHig*38/100);//265
		studentPanel.setName("Search Student");
		studentPanel.setBorder(studentTittle);
		studentPanel.setBackground(Color.white);
		panel.add(studentPanel);
		    
		headingFont = new Font("Serif",Font.BOLD,18);
		JLabel student_search_L = new JLabel("Search Student");
		student_search_L.setAlignmentX(JLabel.LEFT);
	
		student_search_L.setForeground(Color.black);
	    student_search_L.setFont(headingFont);
		student_search_L.setBounds(20,10, 200, 30);
		studentPanel.add(student_search_L);
		    
		    
		    
		ImageIcon backround_img1 = new ImageIcon("images/ic_search.png");
		Image img1 = backround_img1.getImage();
		Image temp_img1 = img1.getScaledInstance(20, 20, Image.SCALE_SMOOTH);
		backround_img1 = new ImageIcon(temp_img1);
		JLabel background1 = new JLabel("", backround_img1, JLabel.CENTER);
		background1.setBounds(20,40, 20, 20);
		studentPanel.add(background1);
		    
		JTextField passengerSearch = new JTextField();
		passengerSearch.setBackground(Color.decode("#FFFFFF"));
		passengerSearch.setForeground(Color.black);
		passengerSearch.setBounds(40,40, 150, 20);
		studentPanel.add(passengerSearch);
		passengerSearch.getDocument().addDocumentListener(new DocumentListener() {
		    @Override
		    public void insertUpdate(DocumentEvent e) {
		        search(passengerSearch.getText());
		    }
		    @Override
		    public void removeUpdate(DocumentEvent e) {
		        search(passengerSearch.getText());
		    }
		    @Override
		    public void changedUpdate(DocumentEvent e) {
		    search(passengerSearch.getText());
		    }
		    public void search(String str) {
		    	if (str.length() == 0) {
		            sorter2.setRowFilter(null);
		        } else {
		            sorter2.setRowFilter(RowFilter.regexFilter(str));
		        }
		    }
		});
		    
		    
		student_table();
    

Here is our Student table.

    
private void student_table() {		
			
	// TODO Auto-generated method stub
	String[] columnNames = {"Student Id","Name","Contact No","Email Id","Address"
	};
			
	DefaultTableModel model = new DefaultTableModel();
	sorter2 = new TableRowSorter<>(model);

	model.setColumnIdentifiers(columnNames); 
			
	studentTable = new JTable();
	studentTable.setRowSorter(sorter2);
	studentTable.setBounds(20,70, winWidth*54/100,184);
	studentPanel.add(studentTable);
	studentTable.setModel(model);

	JScrollPane scrollPane = new JScrollPane(studentTable);
	scrollPane.setBounds(20,70, winWidth*54/100,184);
	studentTable.setFillsViewportHeight(true);
	studentPanel.add(scrollPane);
			
	DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
	centerRenderer.setHorizontalAlignment( JLabel.CENTER );
	studentTable.getColumnModel().getColumn(0).setCellRenderer( centerRenderer );
	studentTable.getColumnModel().getColumn(1).setCellRenderer( centerRenderer );
	studentTable.getColumnModel().getColumn(2).setCellRenderer( centerRenderer );
	studentTable.getColumnModel().getColumn(3).setCellRenderer( centerRenderer );
	studentTable.getColumnModel().getColumn(4).setCellRenderer( centerRenderer );
			
			
		
	studentTable.getTableHeader().setFont(new Font("SansSerif", 1, 13));
	studentTable.getTableHeader().setBackground(Color.decode("#4287f5"));
	studentTable.getTableHeader().setForeground(Color.decode("#FFFFFF"));
			
	studentTable.getColumnModel().getColumn(0).setPreferredWidth(30);
	studentTable.getColumnModel().getColumn(4).setPreferredWidth(30);
	studentTable.getColumnModel().getColumn(2).setPreferredWidth(40);
			
	studentTable.setRowHeight(30);

			
	studentTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
		public void valueChanged(ListSelectionEvent event) {
			// do some actions here, for example
			// print first column value from selected row
		        	
			std_name.setText("Id : "+studentTable.getValueAt(studentTable.getSelectedRow(),0).toString()+
			        			"  Name : "+studentTable.getValueAt(studentTable.getSelectedRow(),1).toString());
			        	
			selected_std_id = studentTable.getValueAt(studentTable.getSelectedRow(),0).toString();

				        
		}
		
	});	
	
			
	student_table_update();
		
}

                        

Here is action layout and Its UI.


    // Action table Base panel
	TitledBorder actionTittle = BorderFactory.createTitledBorder(borderline);
	actionTittle.setTitleJustification(TitledBorder.LEFT);
	actionTittle.setTitleFont(textFont);
	actionTittle.setTitle("Action");
	actionTittle.setTitleColor(Color.black);
		    
	actionPanel = new JPanel();
	actionPanel.setBorder(actionTittle);
	actionPanel.setBounds(winWidth*60/100,panelHig*15/100, winWidth*33/100, panelHig*81/100);//560
	actionPanel.setLayout(null);
	actionPanel.setName("Action");
	actionPanel.setBackground(Color.white);
	panel.add(actionPanel);
		    	    
	JLabel room = new JLabel();
	room.setText("Selected Room :");
	room.setForeground(Color.black);
	room.setFont(new Font("Lucida",Font.BOLD,14));
	room.setSize(new Dimension(winWidth/3,winHeight/10));
	room.setLocation(30, 10); 
    actionPanel.add(room);
		    
    JLabel allot = new JLabel();
    allot.setText("Alloted To :");
    allot.setForeground(Color.black);
    allot.setFont(new Font("Lucida",Font.BOLD,12));
    allot.setBounds(30,300, winWidth/13, winHeight/10);
    allot.setBackground(Color.blue);
    actionPanel.add(allot);
            
    std_name = new JLabel();
    std_name.setForeground(Color.black);
    std_name.setFont(new Font("Lucida",Font.PLAIN,12));
    std_name.setBounds(30+winWidth/12,300, winWidth/5, winHeight/10);
    std_name.setBackground(Color.blue);
    actionPanel.add(std_name);
            
           
	selected_room_table();

Here's Selected room table.


    private void selected_room_table() {		
			
		// TODO Auto-generated method stub
		String[] columnNames = {"Room No", "Price" };
			
		DefaultTableModel model = new DefaultTableModel();


	    model.setColumnIdentifiers(columnNames); 
			
	    selectedroomTable = new JTable();
	    selectedroomTable.setBounds(20,70, 380, 200);
		actionPanel.add(selectedroomTable);
		selectedroomTable.setModel(model);

		JScrollPane scrollPane = new JScrollPane(selectedroomTable);
		scrollPane.setBounds(20,70, 380,200);
		selectedroomTable.setFillsViewportHeight(true);
		actionPanel.add(scrollPane);
			
		DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
		centerRenderer.setHorizontalAlignment( JLabel.CENTER );
		selectedroomTable.getColumnModel().getColumn(0).setCellRenderer( centerRenderer );
		selectedroomTable.getColumnModel().getColumn(1).setCellRenderer( centerRenderer );
			
			
		
		selectedroomTable.getTableHeader().setFont(new Font("SansSerif", 1, 13));
		selectedroomTable.getTableHeader().setBackground(Color.decode("#4287f5"));
		selectedroomTable.getTableHeader().setForeground(Color.decode("#FFFFFF"));
			
		selectedroomTable.getColumnModel().getColumn(0).setPreferredWidth(30);
		selectedroomTable.getColumnModel().getColumn(1).setPreferredWidth(30);
		selectedroomTable.setRowHeight(30);

			
	}

    

Now we add "SAVE" Button in action layout and its logic to save data in database when click "SAVE" Button.


    JButton addButton = new JButton(new ImageIcon(((new ImageIcon("images/button32.png")).getImage()).getScaledInstance(200, 50, java.awt.Image.SCALE_SMOOTH)));      
	addButton.setText("Save");
	addButton.setContentAreaFilled(false);
	addButton.setBorder(null);
	addButton.setForeground(Color.white);
	addButton.setHorizontalTextPosition(JButton.CENTER);
	addButton.setVerticalTextPosition(JButton.CENTER);
	addButton.setFont(new Font("Lucida",Font.PLAIN,16));
	      
	addButton.setBounds(130,450, 200, 50);
	       
	        
	actionPanel.add(addButton);
	addButton.addActionListener(new ActionListener() {
	    @Override
	    public void actionPerformed(ActionEvent ae) {
	            	
	            	
	        String var = "";
	        String status = "alloted";
	        Boolean is_room_selected = false;
			Boolean is_std_selected = false;
			Boolean room_alloted = true;
					
				 
			String allotment_date= Utils.getDate("yyyy-MM-dd") ;
			String vacant_date = null;
						            	
	            	 
	        if(selected_std_id == null){
				var += "Select Student, ";
			}else {					
				is_std_selected = true;
			}
			if(selected_room_number == null){
				var += "Select Room, ";
			}else {
				is_room_selected = true;
			}
	            	 

	        Connection conn = SQLiteJDBCDriverConnection.connect1();
	            	
	        if(is_room_selected && is_std_selected) {
	            	
	        	try {
	            		
					PreparedStatement insert = conn.prepareStatement("insert into room_alloted(room_number, alloted_to, allotment_date, vacant_date)values(?,?,?,?)");

					insert.setString(1, selected_room_number);
					insert.setString(2, selected_std_id);
					insert.setString(3, allotment_date);
					insert.setString(4, vacant_date);	

					insert.executeUpdate();
					JOptionPane.showMessageDialog(null, "Alloted successfully");
						
					String query = "update room set status = ? where room_no = ?";
	            	PreparedStatement preparedStmt = conn.prepareStatement(query);
	            	preparedStmt.setString(1, status);
	            	preparedStmt.setString(2, selected_room_number);

	            	preparedStmt.executeUpdate();

	            	String query2 = "update student set room_alloted = ? where student_id = ?";
	            	preparedStmt = conn.prepareStatement(query2);
	            	preparedStmt.setBoolean(1, room_alloted);
	            	preparedStmt.setString(2, selected_std_id);

	            	preparedStmt.executeUpdate();
						
	            	student_table();
	            	room_table();
	            	selected_room_table();
	            	std_name.setText("");
	            	     
	            	frame.dispose();
		            new Allotment(dashboardFrame);
					conn.close();	
						
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
	        	
	            	
	        }else {
	            JOptionPane.showMessageDialog(null, var,"Error message", JOptionPane.ERROR_MESSAGE);
	            	
	        }
	            	
	    }
	});	        
	        

	       
	panel.revalidate();
	panel.repaint();
        

Here is logic for fetch data for Room Table and update it.


	private void room_table_update() {		
			
		int CC;
		String status = "vacant";
			
		Connection conn = SQLiteJDBCDriverConnection.connect1();
		try {
				
			PreparedStatement insert = conn.prepareStatement("select room_no, room_rent from room where status LIKE'%"+status+"%'");
			ResultSet rs = insert.executeQuery();
				
			ResultSetMetaData rsmd = rs.getMetaData();
			CC = rsmd.getColumnCount();
				
			DefaultTableModel dft = (DefaultTableModel)roomTable.getModel();
			dft.setRowCount(0);
				
			while(rs.next()) {
				Vector v2 = new Vector();
					
				for(int ii = 1; ii<=CC; ii++) {
						
					v2.add(rs.getString("room_no"));
					v2.add(rs.getString("room_rent"));
						
					cel1 = rs.getString("room_no");
					cel2 = rs.getString("room_rent");
						
				}
				dft.addRow(v2);
					
			}
				
			conn.close();
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
			
	}
	
	

Here is logic for fetch data for Student Table and update it.

	
	private void student_table_update() {		
			
		int CC;
			
		int is_room_alloted = 0;
			
		Connection conn = SQLiteJDBCDriverConnection.connect1();
		try {
				
			PreparedStatement insert = conn.prepareStatement("select student_id, student_name, contact_no, email_id, address  from student where room_alloted LIKE'%"+is_room_alloted+"%'");
			ResultSet rs = insert.executeQuery();
				
			ResultSetMetaData rsmd = rs.getMetaData();
			CC = rsmd.getColumnCount();
				
			DefaultTableModel dft = (DefaultTableModel)studentTable.getModel();
			dft.setRowCount(0);
				
			while(rs.next()) {
				Vector v2 = new Vector();
					
				for(int ii = 1; ii<=CC; ii++) {
						
					v2.add(rs.getString("student_id"));
					v2.add(rs.getString("student_name"));
					v2.add(rs.getString("contact_no"));
					v2.add(rs.getString("email_id"));
					v2.add(rs.getString("address"));				
				}
				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.