いくつかのsとsを含む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
また、画面に表示されるたびにいくつかのアクションを実行するリスナーを作成するにはどうすればよいですか?