This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
You are to design and code a Java application and Applet which allows the user to move words about a container. There are a number of ways to implement this problem, and the following is a suggestion of a recommended way:
Create two classes: a class BoxWord, which represents the moveable word objects, and a Frame(Applet-based) driver class. I construct the word object with the following parameters: a reference to the parent, a String (the actual word), a color, a font, a width and a height. You may not need all those for a basic working program. The object must delegate a MouseMotionListener and mouseListener to pick up a mousePressed (word select), mouseReleased (word deselect), and mouseDragged (word moved) events. To move the words you can use the setLocation method, inherited from the Component class. You can use the Component method getLocation method to find out where the word is currently located. I use an extended Canvas to create my words, but a Label might work as well.
The motion is accomplished by setting the x-coordinate location of the word to the current word x-coord location, plus the x-coord of the mouseDragged event, minus the the x-coord of the original selection location (note that a selection of a word can occur anywhere in that object). The y-coord is done similarly.
The driver program has an array of String, as well as an array of BoxWord. As it loops through the array of String, it will construct the word objects and place them randomly in the driver container. The layout manager should be null, i.e. no layout manger. To have the objects apprear on the GUI you will use the setBounds method. [ August 31, 2006: Message edited by: Bear Bibeault ]