前回まではSwingアプリケーションの基本的な仕組みを説明してきました。今回からは、実際に簡単なGUIアプリケーションを作成することを通じて、Swingの仕組みをさらに掘り下げていきます。
今回作成するアプリケーションは「ToDoリスト」です。「ToDoリスト」は、自分のすべきこと(ToDo)を一覧にし、把握することを目的としています。図1が実際に作成するToDoリストのイメージです。
ToDoリストは以下の機能を提供します。
今回は、上記の機能のうち、以下の機能を実装します。
ToDoリストの一覧部分は“JList”を使用して表現することにします。実際にToDoリストを実装する前に、まずはこのJListについて解説しましょう。
JListはリストボックスを表現するコンポーネントです。JListは複数のオブジェクトを一覧表示することができ、また、動的に一覧へのオブジェクトの追加、変更、削除を行うことができます。
JListは5つの種類のコンストラクタを持っています。今回は、5つのうちのListModelを渡すタイプのコンストラクタを使用します。このコンストラクタを使用すると、渡したリストモデルが管理しているデータを表示するリストボックスが生成されます。
JList(ListModel dataModel)
ListModelは、JListの表示データを管理しているクラスです。JList内の表示データの操作はListModelに対して行います。このようにJListが表示データの管理をListModelに委譲しているのは、データを管理するクラスと、ビューを管理するクラスを分離するというSwingの設計思想によるものです。
また、JListは.ListDataListenerを使用してListModelの内容を監視しており、ListModelに変更があった場合は、自身のビューを更新しています(図2を参照)。この仕組みにより、表示データの操作やデータモデルの拡張はListModelに対してのみ行えばよく、ビューの問題に関しては意識する必要がありません。
DefaultListModelはListModelの基本的な機能を実装したクラスです。このクラスはListModelへの動的な追加、編集、削除に対応しています。
今回作成するToDoリストは追加、編集、削除機能を提供するため、このDefaultListModelを使用します。
Copyright © ITmedia, Inc. All Rights Reserved.