web-dev-qa-db-ja.com

JList-複数のアイテムを選択

JListの複数の値を自動的に選択したいときに、JListのこのsetSelectedValue()メソッドの問題に直面しましたが、それでも1つしか選択されませんでした。方法はありますか?

 String[] items = { "Item 1", "Item 2", "Item 3", "Item 4" };
      final JList theList = new JList(items);
      theList.setSelectedValue("Item 1",true);
      theList.setSelectedValue("Item 2",true);

このコードは、選択されたItem 2のみを示しています。

16
Nirav

JList.setSelectedIndices(int[])を呼び出した後、JList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)を使用します。

例えば。

import javax.swing.*;
import Java.io.*;
import Java.util.ArrayList;
class MultiSelectList {
    public static void main(String[] args) throws Exception {
        File f = new File("MultiSelectList.Java");
        InputStream is = new FileInputStream(f);
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        final ArrayList<String> lines = new ArrayList<String>();
        String line = br.readLine();
        while (line!=null) {
            lines.add(line);
            line = br.readLine();
        }
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JList list = new JList(lines.toArray());
                list.setSelectionMode(
                    ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
                int[] select = {19, 20, 22};
                list.setSelectedIndices(select);
                JOptionPane.showMessageDialog(null, new JScrollPane(list));
            }
        });
    }
}

スクリーンショット

Screen shot of code

13
Andrew Thompson

NetBeans GUIエディタを使用しているため、以下に示すように、JList用に生成されたPost-Creation Codeをカスタマイズできます。

post-creation dialog

4
trashgod
list.getSelectionModel().setSelectionInterval(...);

または、選択が連続していない場合は、複数を使用する必要があります

list.getSelectionModel().addSelectionInterval(...);
4
camickr
import javax.swing.*;
import Java.io.*;
import Java.util.ArrayList;

class MultiSelectList {
    public static void main(String[] args) throws Exception {
        File f = new File("MultiSelectList.Java");
        InputStream is = new FileInputStream(f);
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        final ArrayList<String> lines = new ArrayList<String>();
        String line = br.readLine();
        while (line!=null) {
            lines.add(line);
            line = br.readLine();
        }
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JList list = new JList(lines.toArray());
                list.setSelectionMode(
                    ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
                int[] select = {19, 20, 22};
                list.setSelectedIndices(select);
                JOptionPane.showMessageDialog(null, new JScrollPane(list));
            }
        });
    }
}
0
iOS Developer