Is there a need for Canvas? when simply using drawImage()

I am in the process of making a simple 2d game engine. My original setup consisted of a JFrame with a Canvas and then using .getVSyncedBufferCaps() option when creating my buffer strategy to get smooth 60fps in windowed mode. I draw all my stuff to an int array which is tied to a buffered image which then gets drawn. I’ve been reading more and more and even though its not really an issue anymore there is this debate about mixing AWT and Swing components. So just for the heck of it I removed the Canvas and used a JPanel. Since I couldn’t get the buffer strategy of the JPanel I looked online and a few examples were passing in a copy of the JFrame to the class extending the JPanel and then getting the buffer strategy from that. I then realized… whats even the point of having the Jpanel so I moved my render code (which simply draws a buffered image to the graphics context into the JFrame and removed the JPanel all together and sure enough everything was still working. So my question is why would it be necessary to even place a Canvas or a JPanel in a JFrame when I can simply get the BufferStrategy of the JFrame, then getDrawGraphics and draw on that? So far the only downside I’ve noticed is that my coordinates are offset and start at the top left of the actual window instead of the contentPane, but that can be accounted for easily.