Javaプログラミング/Javaプログラミング関連情報

JListの基本をマスターしよう!(3ページ目)

今回は、一覧リストを表示するためのJListを使ってみましょう。

執筆者:掌田 津耶乃

モデルクラスとは?


よりJListを使いこなそうとなると、項目の追加や削除といったことも行いたくなるでしょう。が、JListをいくら調べても、項目を操作する機能が見当たらないのです。ということは? JListには項目を操作する機能はないのでしょうか?

実は、「ない」のです。というのも、実は今やったように、表示する項目を配列でJListに渡して表示させるという方法は、JListの使い方からすればかなり一般的ではないものなのです。要するに、「ちょっと利用したい、という人向けに、簡単な方法も用意しておきました」というものなのですね。

では、JList本来の使い方とは、どういうものか。――それは、「モデル」を利用する方法です。モデルとは、データを構造的に管理するためのクラスです。JListに表示するデータを、このモデルとして定義し、それをJListに組み込んで表示を行わせる、それがJListの基本的な使い方なのです。

このように「コンポーネントの機能はJListで操作する」「データは、モデルクラスで管理する」というようにコンポーネントとデータを完全に切り分けることによって、複雑なデータも管理しやすくしているのですね。

このモデルクラスには、さまざまなものがあります。コンポーネントが違えばデータの構造も違いますから、モデルクラスも違ってくるのです。JListの場合は、「ListModel」というインターフェイスが用意されています。これを実装して、モデルクラスを作成すればよいわけです。といっても、全部作るのは面倒ですので、実装済みのすぐに使えるクラスとして「DefaultListModel」というクラスがSwingには用意されています。

では、このDefaultListModelを組み込んで、JListの項目を操作する簡単な例を作成してみましょう。ここでは、項目を追加するサンプルを用意しました。

package jp.allabout.java;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.event.*;

public class SampleApp extends JFrame
    implements ActionListener {
  private static final long serialVersionUID = 1L;
  private JTextField field;
  private JList list;
  private DefaultListModel model;
  
  public SampleApp(){
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    model = new DefaultListModel();
    model.addElement("Windows");
    model.addElement("Linux");
    model.addElement("Mac OS X");
    list = new JList(model);
    this.add(list,BorderLayout.CENTER);
    field = new JTextField();
    field.addActionListener(this);
    this.add(field,BorderLayout.NORTH);
    this.setSize(new Dimension(300,200));
  }
  
  @Override
  public void actionPerformed(ActionEvent e) {
    String s = field.getText();
    model.addElement(s);
    
  }
  
  public static void main(String[] args) {
    new SampleApp().setVisible(true);
  }
}



  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます