Why is componentShown() not called?

Viewed 2949

I have a CardDetailsPanel class which contains several JLabels and JTextFields. This class in contained in a AddCardsPanel and is initialized as follows:

    cardDetailsPanel = new CardDetailsPanel(true);
    add(cardDetailsPanel, java.awt.BorderLayout.CENTER);

I also have a JLabel that contains instructions. I want to update this label when the CardDetailsPanel first appears and when focus changes to each JTextField. I have found the addFocusListener() method that will work for the later. However, my compenentShown() method isn't working for the former:

    addComponentListener(new java.awt.event.ComponentAdapter() {
        public void componentShown(java.awt.event.ComponentEvent evt) {
            formComponentShown(evt);
        }
    });

(Okay, I know this is ugly. It was generated by NetBeans.)

private void formComponentShown(java.awt.event.ComponentEvent evt) {
    this.frame = (BaseballFrame) this.getParent().getParent().getParent().getParent().getParent().getParent();
}

(Yah, this is even uglier. I'll deal with the chained getParent() calls later. I want to do other things here as well.)

So why doesn't my listener get called? And how do I write a listener that will perform some actions whenever my CardDetailsPanel appears on the screen?

1 Answers
Related