I decided to continue my Java graphics programming with a simple program to draw a sprial. This should have been a cake walk. I kept in mind that the Math functions took angles in radians. My mind thinks of angles in degrees. The Math package can convert between the two units. For some reason, my graphics were not showing up on the screen. This was frustrating. A good developer know how to debug these things.
I output my coordinates to the console. Everything looked fine. Coordinates were getting further and further away from the center. Looked like the drawLine funciton was just not producing any output. I did all my drawing in a loop contained in the paintComponent function. I tried sticking some hard coded coordinates in my drawLine call. No change.
Then I moved over to the Graphics2D world. The draw function there did not work either. I did eventually make a breakthrough. Calls to drawLine outside my loop worked. WTF? Loops should not matter. And the output was good. I saw it on the console. Finally it hit me. I was initializing all my variables in the JPanel constructor. The loop stopped drawing when the lines went off the screen. My problem was that paintComponent was getting called more than once.
The first call to paintComponent worked fine. It also output the correct coordinates to the screen. However the subsequent call(s) to the function erased the screen. By then the variables had incremented past the point where they could be viewed on the screen. I guess I need to learn how to run the code in real time in a debugger. This is a little tricky with graphics programming, as I would need to see the graphics being drawn in real time as well. Sounds like a need for some type of graphics debugger.
I broke out an old notebook that contained ideas for programs I wanted to write. Figured it would provide some inspiration for some practice Java programs. I started with an Address Rolodex program. It was nothing special. I had to relearn some of the GUI programming tricks I picked up last semester. Luckily I had to look up a few specifics. I recalled some of the tricks after a while. For example, I knew it was easiest to implement the ActionListener interface with my JFrame object. That way I coud just addActionListener(this) to set up my events. Much simpler than separate or inner clases.
The mechanics of storing my addresses were simply an ArrayList. Had to make a couple design decisions, like figuring out where the latest address you added goes in the list (I chose the front). I started getting a prototype down with a FlowLayout that looked terrible. All the controls were all over the place depending on the size of the window. At the end, I decided to use a BorderLayout. It does not look awesome. But at least the rows and columns line up nicely. That's because each part of the BorderLayout is a JPanel containing a GridLayout that does the dirty work.
Now I need to choose project number two. I figure I have all summer to relearn the Java skills I have deep down inside somewhere. I was even contemplating picking up a community college class to use to drive my Java coding. A friend mentioned such a class she is taking next semester. I checked the schedule of classes and found it only meet during the day. Us nine-to-five types cannot register for classes like that which interfere with the work day.