我有一个CardDetailsPanel
类,其中包含几个JLabel
和JTextField
。这个类包含在一个AddCardsPanel
中,并按以下方式初始化:
cardDetailsPanel = new CardDetailsPanel(true);
add(cardDetailsPanel, java.awt.BorderLayout.CENTER);
我还有一个包含指令的JLabel
。 我想在CardDetailsPanel
首次出现时和焦点切换到每个JTextField
时更新此标签。 我发现addFocusListener()
方法对后者有效。 但是,我的compenentShown()
方法对前者无效:
addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentShown(java.awt.event.ComponentEvent evt) {
formComponentShown(evt);
}
});
(好的,我知道这很丑陋。它是由NetBeans生成的。)
private void formComponentShown(java.awt.event.ComponentEvent evt) {
this.frame = (BaseballFrame) this.getParent().getParent().getParent().getParent().getParent().getParent();
}
噢,这样做甚至更加丑陋。我稍后会处理链式的getParent()
调用。在这里,我想做其他的事情。
那么为什么我的侦听器没有被调用?我如何编写一个侦听器,每当我的CardDetailsPanel
出现在屏幕上时执行一些操作?
componentShown
更相关于setVisible
。 - MadProgrammer