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

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

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

執筆者:掌田 津耶乃

String以外のオブジェクトを使う



実際に、独自のデータクラスを定義してJListで利用してみましょう。ここでは、名前と年齢を管理する「MyData」というクラスを定義して、これを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 ListSelectionListener{
  private static final long serialVersionUID = 1L;
  private JLabel label;
  private JList list;
  private DefaultListModel model;
  
  public SampleApp(){
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    model = new DefaultListModel();
    model.addElement(new MyData("山田太郎",36));
    model.addElement(new MyData("田中花子",24));
    model.addElement(new MyData("中村小太郎",12));
    list = new JList(model);
    this.add(list,BorderLayout.CENTER);
    list.addListSelectionListener(this);
    label = new JLabel("This is Sample.");
    label.setFont(new Font("Serif",Font.BOLD,18));
    this.add(label,BorderLayout.NORTH);
    this.setSize(new Dimension(300,200));
  }
  
  @Override
  public void valueChanged(ListSelectionEvent e) {
    Object[] arr = list.getSelectedValues();
    String result = "";
    for(Object obj:arr){
      MyData data = (MyData)obj;
      result += data.getName() + " ";
    }
    label.setText(result);
  }
  
  public static void main(String[] args) {
    new SampleApp().setVisible(true);
  }
}

class MyData {
  private String name;
  private int age;
  
  public MyData(String s,int n){
    this.name = s;
    this.age = n;
  }
  
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
  
  @Override
  public String toString() {
    return "名前:" + this.name + "(" + this.age + "歳)";
  }
}

MyDataを保管したJList。ちゃんと表示も、選択された項目も機能する。


ここでは、MyDataクラスを定義し、これを使ってJListに項目を表示させています。ポイントの1つは、「toString」メソッドの定義です。組み込んだインスタンスがJListに表示されるとき、そのインスタンスのtoStringの値を表示するようになっています。そこで、toStringをオーバーライドしておけば、独自の表示を用意することができるのです。

また、このJListでMyDataしか保管しないことがわかっているのなら、項目を扱う処理では、Objectとして取り出したものをすべてMyDataにキャストして利用するようにしましょう。

この「独自クラスをJListで使う」基本がわかれば、さまざまな独自に定義したデータを、そのままJListで利用できるようになります。これは、かなり便利ではないでしょうか。この拡張性こそ、AWTのListとJListの大きな違いなのですね。
【編集部おすすめの購入サイト】
楽天市場で Java 関連の書籍を見るAmazon で Java 関連の書籍を見る
  • 前のページへ
  • 1
  • 3
  • 4
  • 5
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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