title: JLabel won't show with JPanel.setLayout(null). Why?
body: <p>I want to show many different labels over a map, so I'm using null layout in my panel, and calling setLocation for each label. For some reason, though, the labels don't show. If I remove the pan.setLayout(null), then the label appears in the top-center of the panel. Why isn't null layout working with setPosition?</p>
  
  <pre><code>package mapa;
  
  import java.awt.*;
  import javax.swing.*;
  
  public class Mapa extends JFrame {
    private static JPanel pan;
    private static JLabel lab;
  
    public Mapa() {
    }
  
    private static void createAndShowGUI() {
      Mapa frame = new Mapa();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
      lab = new JLabel("TEXTO");
      lab.setBackground(Color.black);
      lab.setForeground(Color.white);
      lab.setOpaque(true);
      lab.setVisible(true);
  
      pan = new JPanel();
      pan.setLayout(null);
      pan.setPreferredSize(new Dimension(640,480));
      pan.add(lab);
      lab.setLocation(100, 100);
  
      frame.getContentPane().add(pan, BorderLayout.CENTER);
      frame.pack();
      frame.setVisible(true);
    }
  
    public static void main(String[] args) {
      javax.swing.SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
          createAndShowGUI();
        }
      });
    }
  }
  </code></pre>