The purpose of this assignment is to use threads to separate a long running process from the event dispatch thread. You will use a JFileChooser to select one or more text files from your local file system. Display these files (including the path) in a JList. After the user is finished adding files the application will count the vowels in each file and display the results for each file in a second JList.

Create the user interface with the these features.

Your application (the class with the main method) must be named VowelCounterApp.java. You may use more classes if desired.

Create a user interface with a button that when clicked displays a JFileChooser. If the user selects a text file, display the file name, including the path, in a JList. Allow the user to click this button and add as many files as desired. Filter the file dialog so only folders and .txt files are displayed. Properly handle the situation where the user cancels the JFileChooser. Review the material in the textbook if you are unfamiliar with the JFileChooser class. Include a button that when clicked processes the selected text files from the JList. Processing requires each file to be read and the vowels counted. This work must be done in a separate thread. Process each file in a different thread. This means a thread separate from the event dispatch thread and separate from the main processing thread. Include a "clear" button that will return the application to its beginning state. "Beginning state" means as if the application had been restarted.

Display the file name and the number of vowels in a second JList. The order the files appear in the second JList doesn't have to match the order of the files in the first JList.

Add a JScrollPane to each JList so scroll bars appear as necessary.

Process only text files. Review the material in the textbook or the prerequisite course if you are unsure how to read a text file. To really test this application you need to either process a great many files at one time or you need a smaller number of really big text files. You can find some large text files by searching the Internet for "large text files".

Review the material on JList in the Week 1 online content. There is a page there describing how to update a JList. Provide a button that when click displays a dialog with "help" information that explains how the application works. Update all user interface elements on the event dispatch thread only.

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.