09/07/25 04:02:30
>>44
>>40のStrExはActionEventのソースをコンポーネント自身が知らなくてもいいように分離されているので
特定のボタンをソースとするActionEventだけを色を変更するきっかけとしたいのなら
StrExの方で色を変更するメソッドをactionPerformedでなくchangeColorsとでも名前を変更して定義して
S02Exの方で
final StrEx s = new StrEx();
JButton b = new JButton("change colors");
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s.changeColors();
}
});
frame.add(s);
のようにすればStrEx自身は色を変えるきっかけとなるイベントソースが何であるかを気にしなくてすむようになる
そうすれば時刻表示の更新のためのactionPerformedをそのまま使用できる
時刻表示の更新もこの色変更と同じ考え方で実装すればStrEx自体にActionListenerを実装する必要がなくなる