 <p>From what I can tell, your paint code should work fine</p> <p>The problem is, most likely, in the fact that the images are not loading, but since you've chosen to ignore any errors that are raised by this process, you won't have any idea why...</p> <p>So, instead of <code>// dont know</code>, use <code>e.printStackTrace()</code> when loading your images</p> <pre><code>for (int i = 0; i &lt; 5; i++) { try { URL url = new URL(getCodeBase(), imageString[i]); images[i] = ImageIO.read(url); } catch (IOException e) { e.printStackTrace(); } } </code></pre> <p>This will at least provide you with some more clues as to the problems you are facing.</p> <p>You should also avoid using AWT (<code>Button</code>) components on Swing (<code>JAppelt</code>) containers. They tend not to play nice well together.</p> <p>Having said all that, I would encourage you not to use <code>JAppelt</code> as a learning tool. Applets come with a swag of their own issues which are difficult to diagnose at the best of times, more so when you're trying to learn Java and the Swing API. The Swing API is complex enough with adding unnecessary challenges.</p> <p>You should also avoid extending from top level containers (in this case, you have no choice), but you should also avoid painting directly to top level containers. Apart from the complexities of the paint process, they are not double buffered, which introduces flickering when the UI is updated.</p> <p>Instead, start with something like a <code>JPanel</code> and override it's <code>paintComponent</code> method. <code>JComponent</code>s are double buffered by default, so they won't flicker when they are repainted. You must also call <code>super.paintXxx</code>. As I said, the paint process is a complex process, each <code>paintXxx</code> method is a link in the chain, if you break the chain, you should be prepared for some strange and unexpected behaviour down the track.</p> <p>Once you have your component setup, you are free to choose how to deploy it, by adding it to something like a <code>JFrame</code> or <code>JApplet</code>, making your component more flexible and reusable.</p> <p>Take a look at <a href="http://docs.oracle.com/javase/tutorial/uiswing/painting/" rel="nofollow">Performing Custom Painting</a> for more details</p> <p>The next question that comes to mind is why? Why do any custom painting at all, when <code>JLabel</code>s will not only do the job, but would probably do it better.</p> <p>Take a look at <a href="http://docs.oracle.com/javase/tutorial/uiswing/" rel="nofollow">Creating an GUI with Swing</a> for more details...</p>