Login

Login

Above UI we are going to create by Awt for Statement Window in our Expense 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.

    
        statementFrame = new JFrame();
		Utils.centeredFrame(statementFrame, windowWidth, windowHeight, "Statement");
		statementFrame.setResizable(false);
		
		Container frameContainer = statementFrame.getContentPane();
		frameContainer.setBackground(Color.gray);

		// Changeable According to What size of screen You Want?
		int containerWidth = windowWidth*94/100;
		int containerHeight = windowHeight*90/100;
		
		int panelWidth = containerWidth*98/100;
		int panelHeight = containerHeight*96/100;
		int posX = windowWidth / 2 - panelWidth / 2 ;
		int posY = windowHeight / 2 - panelHeight / 2 - frameControllerSize / 2;

		// frame without control options
		panel = new JPanel(); 
		panel.setLayout(null);//new BorderLayout()); 
		//panel.setOpaque(false);
		panel.setBackground(Color.decode("#FFFFFF")); 
		panel.setSize(new Dimension(panelWidth,panelHeight)); 
		panel.setLocation(posX, posY);
		frameContainer.add(panel);
		
		// for Rounded Background
		posX = windowWidth / 2 - containerWidth / 2 ;
		posY = windowHeight / 2 - containerHeight / 2 - frameControllerSize / 2;
		JComponent jcomponent = new RoundedBackground(posX, posY, containerWidth, containerHeight);
		jcomponent.setLayout(null);
		frameContainer.add(jcomponent, BorderLayout.CENTER);

    

Here we create a Label for our heading.

    
        // for heading Layout
		posY = panelHeight * 2/100;
		Font headingFont = new Font("Serif", Font.PLAIN, 22);

		// header
		Border borderline = BorderFactory.createLineBorder(Color.black);

		JLabel heading_text = new JLabel("Statement");
		heading_text.setHorizontalAlignment(JLabel.CENTER);
		heading_text.setVerticalAlignment(JLabel.CENTER);
		heading_text.setBackground(Color.decode("#80c2b2"));
		heading_text.setForeground(Color.black);
		heading_text.setFont(headingFont);
		heading_text.setBounds(0,0, panelWidth, panelHeight / 15);
		panel.add(heading_text);
				
		panel.add(Utils.getSeparator(0, panelHeight / 13, panelWidth, 5,"000000"));			
    

Here we create Statement Panel.

    

        Font textFont = new Font("Serif",Font.BOLD,12);
		int bookedPanelWidth = panelWidth*96/100;
		int bookedPanelHeight = panelHeight*86/100;
	    statementPanel = new JPanel();
	    statementPanel.setLayout(new FlowLayout());
	    statementPanel.setLayout(null);
	    statementPanel.setBounds(panelWidth*2/100,panelHeight*10/100, bookedPanelWidth, bookedPanelHeight);
	    statementPanel.setBorder(Utils.getTitledBorder(10, "Statement"));
	    panel.add(statementPanel);
	    
	    statement_table(bookedPanelWidth, bookedPanelHeight);
	    statementFrame.setVisible(true);
        

After this we create statement Table on Statement panel.

    
	private void statement_table(int width, int height) {		
		
		// TODO Auto-generated method stub
		String[] columnNames = {"Credit",
                "Debit",
                "Balance",
                "Credit Date",
                "Debit Date",
                "Category",
                "Description"
                };
		
		DefaultTableModel model1 = new DefaultTableModel();

        model1.setColumnIdentifiers(columnNames); 
		
        statementTable = new JTable(){
			public boolean isCellEditable(int row, int column) {                
                return false;               
			};
		};
        statementTable.setBounds(width*2/100,height*10/100, width*96/100,height*80/100);
		//table.setEnabled(true);
		statementPanel.add(statementTable);
		statementTable.setModel(model1);

		JScrollPane scrollPane1 = new JScrollPane(statementTable);
		scrollPane1.setBounds(width*2/100,height*10/100, width*96/100,height*80/100);
		statementTable.setFillsViewportHeight(true);
		statementPanel.add(scrollPane1);
		
		DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
		centerRenderer.setHorizontalAlignment( JLabel.CENTER );
		statementTable.getColumnModel().getColumn(0).setCellRenderer( centerRenderer );
		statementTable.getColumnModel().getColumn(1).setCellRenderer( centerRenderer );
		statementTable.getColumnModel().getColumn(2).setCellRenderer( centerRenderer );
		statementTable.getColumnModel().getColumn(3).setCellRenderer( centerRenderer );
		statementTable.getColumnModel().getColumn(4).setCellRenderer( centerRenderer );
		statementTable.getColumnModel().getColumn(5).setCellRenderer( centerRenderer );
		statementTable.getColumnModel().getColumn(6).setCellRenderer( centerRenderer );

	
		statementTable.getTableHeader().setFont(new Font("SansSerif", 1, 13));
		statementTable.getTableHeader().setBackground(Color.decode("#980AF2"));
		statementTable.getTableHeader().setForeground(Color.decode("#FFFFFF"));
		statementTable.getTableHeader().setPreferredSize(new Dimension(760, 35));
		statementTable.setRowHeight(25);
		statementTable.getColumnModel().getColumn(0).setPreferredWidth(30);
		statementTable.getColumnModel().getColumn(2).setPreferredWidth(100);
		statementTable.getColumnModel().getColumn(5).setPreferredWidth(100);

		
		statementTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
	        public void valueChanged(ListSelectionEvent event) {
	            // do some actions here, for example
  
	        }
	    });

		statement_table_update();
	}
    

And here we fetch data from database into the statement Table.

    
    private void statement_table_update() {		
				
                conn = SqliteConnection.ConnectDb();
                try {
                    insert = conn.prepareStatement("SELECT credit, debit, balance, credit_date, debit_date, category, description FROM statement WHERE user_id = ?");
                    insert.setString(1, AppConstant.USER_ID);
                    ResultSet rs = insert.executeQuery();
                    
                    DefaultTableModel dft = (DefaultTableModel)statementTable.getModel();
                    dft.setRowCount(0);

                    while(rs.next()) {

                        Vector v2 = new Vector();
                        v2.add(rs.getString("credit"));
                        v2.add(rs.getString("debit"));
                        v2.add(rs.getString("balance"));
                        v2.add(rs.getString("credit_date"));
                        v2.add(rs.getString("debit_date"));
                        v2.add(rs.getString("category"));
                        v2.add(rs.getString("description"));
        
                        dft.addRow(v2);
                    }
                
                    conn.close();
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }


    

At last we will manage closing of window

    
    statementFrame.addWindowListener(new WindowAdapter(){  
            public void windowClosing(WindowEvent e) {  
            	statementFrame.dispose();
            	dashboardFrame.setVisible(true);
            }  
        });  
    

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.