Java.use(better);
□ 重複するコードの断片を再利用したい
メニュー項目 Green を選択すると、背景色が緑に変化します。これを実現するコードの断片では、
JMenuItem greenMenu = new JMenuItem("Green"); new ColorMenu().listenTo(greenMenu); ... class ColorMenu extends ButtonClicked { public void execute() { String s = source.getText(); setTitle(s); setBackground(ColorMap.get(s)); } }
抽象クラス ButtonClicked を具現化した、具象クラス ColorMenu のインスタンスを用意します。これは、同じ種類のコンポーネント JMenuItem を利用する、異なるインスタンスで、同じコードの断片を「共有したい」ときに便利です。
ButtonClicked の利用者は、メニュー項目を選択したときに実行 execute したい処理を記述するために、新たなクラス ColorMenu を用意します。ButtonClicked の提供者は、リスナーを登録して、イベントが発生したときに処理を依頼します。
□ 他のインスタンスと情報を交換したい
リスト項目を選択すると、それに合わせて背景色が変化します。これを実現するコードの断片では、
JList list = new JList( new String[] { "Red", "Green", "Blue" }); new ColorList(frame).listenTo(list); ... class ColorList extends ListSelectionChanged { private JFrame frame; public ColorList(JFrame frame) { this.frame = frame; } public void execute() { String s = (String)source.getSelectedValue(); frame.setTitle(s); frame.setBackground(ColorMap.get(s)); } }
抽象クラス ListSelectionChanged を具現化した、具象クラス ColorList のインスタンスを用意します。また、他のインスタンスを参照できるフィールド JFrame frame を用意します。このフィールドは、特定のインスタンスと情報を交換したいときに便利です。
 ̄ListSelectionChanged の利用者は、リスト項目を選択したときに実行 execute したい処理を記述するために、新たなクラス ColorList を用意します。(後述するように)ListSelectionChanged の提供者は、リスナーを登録 addListSelectionListener して、〔when〕イベント ListSelectionEvent が発生したときに〔how〕メソッド valueChanged を介して処理を依頼します。
↑ TOP
》作業中です《