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

JavaのJListで使える選択モードは何種類?3つのモードの違いを解説

JListは、JComponentクラスを継承したSwingコンポーネントの一つで、オブジェクトのリストを画面に表示し、ユーザーがその中から1つ以上の項目を選択できるようにするためのものです。

JavaのJListには、用途に応じて使い分けられる3種類の選択モードが用意されています。

  • ListSelectionModel.SINGLE_SELECTION:一度に選択できるのは、リスト内の1つのインデックスだけです。
  • ListSelectionModel.SINGLE_INTERVAL_SELECTION:一度に選択できるのは、1つの連続した区間(連続するインデックスの範囲)だけです。
  • ListSelectionModel.MULTIPLE_INTERVAL_SELECTION:このモードでは、選択できる項目に制限がなく、CtrlキーやShiftキーを使って離れた項目もまとめて選択できます。これがデフォルトのモードです。

選択モードを切り替えるサンプルコード

以下の例では、ラジオボタンを使ってJListの選択モードを動的に切り替えています。各ラジオボタンがクリックされると、setSelectionMode()メソッドによって対応するモードが設定されます。

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

public class JListSelectionModeTest extends JFrame implements ActionListener {
    private JList list;
    private DefaultListModel listModel;

    public JListSelectionModeTest() {
        setTitle("JListSelectionMode Test");
        setLayout(new BorderLayout());
        listModel = new DefaultListModel();
        for (int i = 1; i < 10; i++) {
            listModel.addElement("list item #" + i);
        }
        list = new JList(listModel);
        add(new JScrollPane(list), BorderLayout.CENTER);

        JPanel panel = new JPanel(new GridLayout(3, 1));
        JRadioButton rb1 = new JRadioButton("SINGLE_SELECTION");
        rb1.addActionListener(this);
        JRadioButton rb2 = new JRadioButton("SINGLE_INTERVAL_SELECTION");
        rb2.addActionListener(this);
        JRadioButton rb3 = new JRadioButton("MULTIPLE_INTERVAL_SELECTION");
        rb3.addActionListener(this);

        ButtonGroup bg = new ButtonGroup();
        bg.add(rb1);
        bg.add(rb2);
        bg.add(rb3);
        panel.add(rb1);
        panel.add(rb2);
        panel.add(rb3);
        add(panel, BorderLayout.NORTH);

        setSize(350, 275);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent ae) {
        if (ae.getActionCommand().equals("SINGLE_SELECTION"))
            list.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        else if (ae.getActionCommand().equals("SINGLE_INTERVAL_SELECTION"))
            list.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
        else if (ae.getActionCommand().equals("MULTIPLE_INTERVAL_SELECTION"))
            list.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    }

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

実行結果

プログラムを実行すると、ウィンドウ上部に配置された3つのラジオボタンで選択モードを切り替えられます。モードを変更すると、リスト項目を選択する際の挙動がそれぞれのモードに応じて変化することを確認できます。

JavaのJListで使える選択モードは何種類?3つのモードの違いを解説

  1. JavaのJListでダブルクリックとEnterキーイベントを検出・処理する方法

    JListはJComponentクラスを継承したSwingコンポーネントの一つで、ユーザーが単一選択または複数選択を行えるリストを表示できます。JListはListSelectionListenerインターフェースを生成でき、このインターフェースには抽象メソッドvalueChanged()が1つだけ定義されています。 さらに、JListでは以下のようなイベント処理も可能です。 MouseListenerインターフェースを実装することで、リスト上のダブルクリックイベントを捕捉できる KeyListenerインターフェースを実装することで、Enterキーの押下イベントを捕捉できる これらのリス

  2. Javaで作成できるJDialogボックスは2種類!モーダルと非モーダルの違いを解説

    JDialogはDialogクラスのサブクラスで構されるSwingのダイアログコンポーネントです。一般的なフレームウィンドウと異なり、ウィンドウ右上に最小化・最大化ボタンが表示されません。Javaでは、このJDialogボックスを用途に応じて2種類作成できます。 モーダルダイアログ(Modal Dialog) 非モーダルダイアログ(Non-Modal Dialog) モーダルJDialog(Modal JDialog) Javaにおいて、モーダルダイアログがアクティブになっている間、すべてのユーザー入力はそのダイアログに向けられます。このダイアログを閉じるまで、アプリケーションの他の部分に