【发布时间】:2012-08-11 08:45:08
【问题描述】:
我有一个CardDetailsPanel 类,其中包含几个JLabels 和JTextFields。此类包含在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的关系更大
标签: java swing events listener