我有一个CardDetailsPanel
包含几个JLabel
s 和JTextField
s 的类。这个类包含在一个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
出现在屏幕上就会执行一些操作?