我有一個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