It looks like you're mixing AWT and Swing components* here. That may or may not be the cause of your problem, but is better avoided.
I suggest you change your code to use JComponent or JPanel in place of Canvas. You would want to override paintComponent(...) instead of paint(...).
Additionally, if your top-level window is AWT Frame, you would need to change that to JFrame.
*edit Added the
word components [ May 23, 2008: Message edited by: Darryl Burke ]