我有一个CardDetailsPanel
类,其中包含几个JLabel
s和JTextField
s。在包含在AddCardsPanel
和初始化为该类如下:为什么componentShown()未被调用?
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 2012-08-15 01:24:00