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

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

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

執筆者:掌田 津耶乃

イベント処理におけるJListは?


では、このJListのイベント処理について考えてみましょう。イベント処理でJListを使うという場合、2つの理解すべき点があります。1つは「JListのイベントをどう処理するか」であり、もう1つは「JListの選択状況をどう調べるか」です。

JListのイベント処理は「ListSelectionListener」を利用するのが一般的です。これは「項目の選択状態が変更されたとき」に発生するイベントです。項目を何か操作したときに処理を行わせるなら、このイベントリスナーを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;
  
  public SampleApp(){
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    String[] data = {"Windows","Linux","Mac OS X"};
    list = new JList(data);
    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){
      result += (String)obj + " ";
    }
    label.setText(result);
  }
  
  public static void main(String[] args) {
    new SampleApp().setVisible(true);
  }
}

JListから項目を選択すると、選択された全項目名がJLabelに表示される。


項目を選択すると、それがJLabelに表示されます。これは一項目に限らず、いくつの項目を選択してもすべてが表示されます。

ここでは、list.addListSelectionListener(this);としてJListにListSelectionListenerを組み込んでいますね。このListSelectionListenerは、選択状態が変更されたとき、以下のメソッドを呼び出します。

public void valueChanged(ListSelectionEvent e)


このメソッドをオーバーライドすることで、イベント時の処理を行うことができます。ここでは、このクラス自身にimplementsしていますので、クラス内にメソッドを用意してあります。メソッド内では、まず、選択されているすべての項目を取得しています。

Object[] arr = list.getSelectedValues();


このgetSelectedValuesは、選択されている全項目をObject配列で返すものです。ここではJListにはString配列を渡していますから、選択されているStringが配列で返されることになります。

そこで、繰り返しを利用して配列から1つ1つ要素を取り出してはStringにキャストし一つにまとめていきます。そしてすべて整理したところでJLabelにsetTextしていた、というわけです。getSelectedValuesがわかれば、基本的に「選択された項目」を利用することはできるようになります。


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

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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