Why isn't the component I get back from p.findComponentAt(e.getX(), e.getY()); a JLabel? What is going on here?
JLists and JTables put in extra effort to efficiently display a lot of information while minimizing overhead doing so. One way they do this is by displaying information via renderers. What you are seeing in a JList are not true JLabels but images of JLabels (or whatever components are used as the renderer). The JList uses the same renderer to create images for each element in the column. So say you have a JList with 1000 items, rather than create 1000 JLabels, the JList creates just one, uses it to create JLabel images, and then displays the images. So what you are clicking on is truly a JList and not a JLabel.
To test this further, try using a JTextField as a renderer, and you'll quickly find that the cell does not behave like a JTextField and that you can't edit the information that the it displays.