- Develop a GUI application that includes a large text area, several controls, and a keyboard. (10%)
- Using the keypad we implemented in MetricConverter as a guide, create a keyboard class consisting of 26 letter keys, punctuation(.,;:'"?!), backspace, and spacebar. Implement the keyboard as an interface in the GUI application. Extra points to anyone who also implements upper-case letters.
- Clicking the keyboard enters text in the text area. Do not allow the computer keyboard to be used, only the keyboard class you are creating.
- The first control, labeled 'Clear' button clears the text from the text Area. Clear empties the text and re-sets the application back to the beginning.(5%)
- The second, labeled 'Execute' executes a method one breaks up the text by spaces and stores the text in a Collection<> object. Once complete, the control's label changes to 'Sort' and awaits being clicked. (10%)
- Implement your ActionPerformed as inner classes, as we did in MetricConverter with ConvertListener and ClearListener. Of course more appropriate names. Your 'Execute' class will be a little tricky because that function morphs a bit, as you can see. (10%)
- Once the 'Sort' control is pressed, it executes a method that sorts the collection. You can use either a Quick Sort or Merge Sort. Empty the text area and display the sorted collection in it. The control's label should now read 'Hash'. (15%)
- Guess you figured out what Hash should do, but not exactly. Instead of just hashing the String, implement the Hash Map, use the one listed on page 1007 of the text, including it's default capacity and load factor threshold. Display the Hash Map in the text area as two columns. And the button changes to 'Search'. In addition a new control appears, a text field. (20%)
- Entering a key value into the text field initiates a search and causes a dialog box to pop-up. The dialog shows the key and the value associated with the key. If the key is not found, an appropriate error message is displayed. (10%)
- Pay strict attention to coding and naming conventions, class and inline comments, and indenting. (20%)
- Feel free to add to these capabilities, especially if you have time. Extra credit to additional functions, like Graphing the HashMap. Implement any new functionality in it's own method and it's own change to the on-screen button. (10% each)
- Submit all classes, including the HashMap (concrete class, abstract class, and interface (from the book))
Good luck and have some fun with it!
Attached is page 1007 image
Please Login or Register
to Submit the Solution for the Request