Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaのJListでアイテム選択時に値を表示する方法


JListJComponentクラスのサブクラスであり、ユーザーがリストから単一または複数の項目を選択できるようにするSwingコンポーネントです。JListはListSelectionListenerインターフェースを利用でき、このインターフェースには抽象メソッドvalueChanged()が1つだけ定義されています。

JListで項目が選択されたときにその値を表示するには、MouseListenerインターフェースを実装するか、MouseAdapterクラスを継承します。そして、MouseEventクラスのgetClickCount()メソッドを使ってシングルクリック(getClickCount() == 1)を検出し、クリックされた位置から該当する項目を取得して表示します。

処理の流れ

  • getClickCount() == 1 でシングルクリックかどうかを判定する
  • locationToIndex() を使って、クリックされた座標からリストのインデックスを取得する
  • getModel().getElementAt(index) で選択された要素を取り出す
  • JOptionPane.showMessageDialog() で値をダイアログに表示する

コード例

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class JListItemSeletionTest extends JFrame {
    private JList list;
    private JScrollPane jsp;
    private Vector data;

    public JListItemSeletionTest() {
        setTitle("JListItemSeletion Test");
        list = new JList();
        data = new Vector();
        data.addElement("India");
        data.addElement("Australia");
        data.addElement("England");
        data.addElement("England");
        data.addElement("New Zealand");
        data.addElement("South Africa");
        list.setListData(data);
        list.setSelectedIndex(0);
        list.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent me) {
                if (me.getClickCount() == 1) {
                    JList target = (JList) me.getSource();
                    int index = target.locationToIndex(me.getPoint());
                    if (index >= 0) {
                        Object item = target.getModel().getElementAt(index);
                        JOptionPane.showMessageDialog(null, item.toString());
                    }
                }
            }
        });
        jsp = new JScrollPane(list);
        add(jsp, BorderLayout.NORTH);
        setSize(400, 275);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String args[]) {
        new JListItemSeletionTest();
    }
}

コードのポイント

  • Vectorでデータ管理: 表示する国名を Vector に格納し、setListData() でJListに設定しています。
  • 初期選択: setSelectedIndex(0) により、起動時に先頭の項目(India)が選択された状態になります。
  • クリック判定: MouseAdapter を継承することで、不要なメソッドの実装を省略しつつ mouseClicked() だけをオーバーライドしています。
  • スクロール対応: JListを JScrollPane に配置することで、項目数が多くてもスクロールして表示できます。

実行結果

プログラムを実行すると、国名の一覧が表示されたウィンドウが開きます。いずれかの項目をシングルクリックすると、その項目の値がメッセージダイアログとして画面に表示されます。

JavaのJListでアイテム選択時に値を表示する方法

  1. JavaでJComboBoxのアイテムを中央揃えに表示する方法

    JComboBoxは、JComponentクラスのサブクラスであり、テキストフィールドとドロップダウンリストを組み合わせたコンポーネントです。ユーザーはこのリストから値を選択することができます。また、コンボボックスに対してユーザーが操作を行うと、ActionListener、ChangeListener、ItemListenerなどのイベントを発生させることができます。JComboBoxのアイテムはデフォルトでは左揃えで表示されますが、DefaultListCellRendererクラスのsetHorizontalAlignment(DefaultListCellRenderer.CENTER

  2. Java SwingのJCheckBoxで一度に1つの項目だけを選択する方法(ButtonGroupの使い方)

    JCheckBoxとは JCheckBoxはJToggleButtonを継承したSwingコンポーネントで、チェック済みか未チェックのいずれかの状態を持つ小さなボックスとして画面に表示されます。 ユーザーがJCheckBoxをクリックすると、チェック状態と未チェック状態が自動的に切り替わります。 チェックボックスの状態が変化すると、ActionListenerやItemListenerが発生し、イベント処理を行うことができます。 isSelected()メソッドを使うと、そのチェックボックスが選択されているかどうかを判定できます。 デフォルトの状態では、複数のチェックボックスを同時に選択す