連載
» 2006年09月16日 00時00分 公開

SwingでJavaに強くなる(5):JListを使いSwingの仕組みを理解する (1/2)

前回まではSwingアプリケーションの基本的な仕組みを説明してきました。今回からは、実際に簡単なGUIアプリケーションを作成することを通じて、Swingの仕組みをさらに掘り下げていきます。

[垣中元和,株式会社シンプレクス・テクノロジー]

ToDoリストアプリケーションの仕様

 今回作成するアプリケーションは「ToDoリスト」です。「ToDoリスト」は、自分のすべきこと(ToDo)を一覧にし、把握することを目的としています。図1が実際に作成するToDoリストのイメージです。

図1 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に対してのみ行えばよく、ビューの問題に関しては意識する必要がありません。

図2 表示データの操作やデータモデルの拡張はListModelに対してのみ行えばよい仕組み 図2 表示データの操作やデータモデルの拡張はListModelに対してのみ行えばよい仕組み

DefaultListModel

 DefaultListModelはListModelの基本的な機能を実装したクラスです。このクラスはListModelへの動的な追加、編集、削除に対応しています。

 今回作成するToDoリストは追加、編集、削除機能を提供するため、このDefaultListModelを使用します。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。