- This desktop application allows the user to store the information of a student based on their ID number, first and last names, and the college and program that the student is in.
- It has an 'admin mode' where the user can add or delete colleges, add or delete programs, delete students, save the progress of the data, or end the attendance session.
- The application creates a .pdf once the attendance session has been ended.
- Created using Java Swing and AWT, with assistance from FlatLaf for the final look.
- Swing
- AWT (Abstract Window Toolkit)
- FlatLaf
- itextpdf
- net.URI (Uniform Resource Identifier)
- io (Input Output)
- time
- This is my first time working with Java in this scale. The syntax of Java, while not that hard to understand, was verbose.
- Swing was an entirely new library for me to learn. It was similar but significanlty different to TKinter from Python. I had to watch a full tutorial on Java Swing GUI first before starting this project.
- The biggest hurdle for me to overcome while working this project was how to place the widgets (buttons, labels, tables). I tried different Layout Managers, but the one that suited my best interests was GridBagLayout. However, GridBagLayout was not easy to learn. I got frustrated with it many times throughout the project, but eventually, I got the results that I wanted.
- I encountered a lot of problems while making this project that I won't be able to list all of it in this section. However, I will list all the references that I have used and the problem that it tried to solve.
- I worked on this project on and off for more than 3 months. My academics got in the way of finishing this project. I only managed to finish this project during the summer break.
- Reference 1 (Hide panel in a JFrame)
- Reference 2 (About using multiple JFrames)
- Reference 3 (Change JPanel from another class) (Andy McRae)
- Reference 4 (Object passing)
- Reference 5 (GridBagLayout tutorial)
- Reference 6 (Put button on top left corner using GridBagLayout)
- Reference 7 (Add JTable in Java Swing)
- Reference 8 (Remove panel) (camickr's comment)
- Reference 9 (Put title in JOptionPane)
- Reference 10 (Show input dialog with list box)
- Reference 11 (All about ArrayList)
- Reference 12 (2D ArrayList)
- Reference 13 (Print ArrayList)
- Reference 14 (Difference between JWindow and JDialog)
- Reference 15 (Make JTable non-editable)
- Reference 16 (JTable disable user column dragging)
- Reference 17 (Center text in JTable) (camickr's comment)
- Reference 18 (Put buttons in JTable)
- Reference 19 (Remove the contents in a JTable)
- Reference 20 (Read a .csv file in Java)
- Reference 21 (Fix git showing files even after being in git ignore)
- Reference 22 (Fix ConcurrentModificationException)
- Reference 23 (Check if string is equal to null)
- Reference 24 (Get data from JTable)
- Reference 25 (Delete row from a JTable)
- Reference 26 (Delete row from a JTable by selecting a row)
- Reference 27 (Try-with-resource a file writer)
- Reference 28 (Get data from an entire row of a table) (Answer by Damilola Fagoyinbo)
- Reference 29 (Remove the first and last elements of a string using substrings)
- Reference 30 (Get current date and time in Java) (Followed the first option)
- Reference 31 (Put an external jar file into IntelliJ idea project)
- Reference 32 (Generate PDF using itextpdf) (Also shows how to generate a table in PDF)
- Reference 33 (Put paragraph in center of page)
- Reference 34 (Set pagesize of pdf) (Techidiot's comment)
- Reference 35 (Align cell in table in itextpdf)
- Reference 36 (Delete contents of TableModel)
- Reference 37 (Check if JTable is empty)
- Reference 38 (FlatLaf installation)
- Reference 39 (FlatLaf switch from light and dark mode @10:24)
- Reference 40 (Multiline text using JLabel)
- Reference 41 (Open a browser using a Java button)
- Reference 42 (Replacement of java.net.URL)
- Reference 43 (Change Java icon)
- Reference 44 (Read file outside of src folder; I just put everything in src but in a package)
- Reference 45 (Git commit a file and then ignore its future changes)
- Reference 46 (Solution when the operation above returns fatal: Unable to mark file... error)
- Reference 47 (Fix Git saying "Commit your changes or stash them before you can merge" error after pulling from remote repository) (stdcall's answer - discard the local changes)
- Reference 48 (Set table column width) (Harsha Basnayake's answer)
- Reference 49 (Java know where FileOutputStream will write file)