Определение AWT «видимого» может быть немного нелогичным. Из Javadoc java.awt. Компонент # isVisible:
"Components are initially visible, with the exception of top level components such as
Frame objects."
Согласно этому описанию, p<code> is already visible <b>before</b> you add the ComponentListener. In fact, you can verify this if you insert a</p>
<pre><code>System.out.println(p.getVisible());
в любом месте перед вызовом f.setVisible (true) . В этом смысле видимость не изменяется при отображении кадра, и поэтому componentShown (..) не вызывается.