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