java swing netbeans jlist multi-select

java - JList-seleccionar varios elementos



swing netbeans (4)

setSelectedValue() un problema con este método setSelectedValue() en JList cuando quería seleccionar múltiples valores en una JList automáticamente, aún así seleccionaba solo uno. ¿Hay alguna manera?

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);

Este código muestra solo el Item 2 como seleccionado.


Mientras utiliza el editor de la GUI de NetBeans, puede personalizar el Post-Creation Code para su JList como se muestra a continuación.


Use JList.setSelectedIndices(int[]) después de llamar a JList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION) .

P.EJ

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)); } }); } }

Captura de pantalla


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)); } }); } }


list.getSelectionModel().setSelectionInterval(...);

o si la selección no es consecutiva entonces necesitas usar múltiples

list.getSelectionModel().addSelectionInterval(...);