 <p>The new <code>JLabel</code> is not appearing as you would need to call <code>revalidate()</code> and <code>repaint()</code> to update the container to account for the newly added component.</p> <p>From your use of <code>setBounds</code>, it appears you are using absolute positioning (If not, a layout manager will pay no heed to this call). <em>Always</em> better to use a <a href="http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html" rel="nofollow">layout manager</a> for positioning &amp; sizing components..</p> <p>You could simply call <code>setText</code> on an existing <code>JLabel</code> instead of adding a new one to the container:</p> <pre><code>b3.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { final JFileChooser fc = new JFileChooser(); int returnVal = fc.showOpenDialog(fc); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); String fileName = file.getName(); l6.setText(fileName); } } }); </code></pre>