Cómo crear una lista desplegable en Java Swing con la selección de varios artículos?
-
30-09-2019 - |
Pregunta
Soy consciente de JList
y JComboBox
. Necesito la caída de cuadro combinado abajo funcionalidad con la funcionalidad de selección múltiple que proporciona JList
.
Esto se debe a que el contenido de la lista son demasiado grandes para ser visualizado mediante una simple lista. También necesito para seleccionar varios elementos, de lo contrario habría contentado con JComboBox
.
¿Alguna sugerencia?
Solución
Cuando se utilizan múltiples selecciona, es mejor utilizar una lista de un cuadro combinado. Como metáforas GUI van, la gente espera un cuadro combinado sea de selección única, mientras que las listas pueden ser tanto.
el contenido de la lista son demasiado grandes para ser visualizado mediante una simple lista ??p>
Coloque el JList
en un JScrollPane
. Puede llamar setVisibleRowCount (int) en el JList
para especificar cómo se deben mostrar muchas filas a la vez.
Otros consejos
Se puede hacer un procesador de celdas personalizado para el cuadro combinado y añadir casillas de verificación para que los componentes, por lo que puede marcar y desmarcar ellos. Tienes que hacer algo como esto:
public class MyComboBoxRenderer implements ListCellRenderer {
private String[] items;
private boolean[] selected;
public MyComboBoxRenderer(String[] items){
this.items = items;
this.selected = new boolean[items.lenght];
}
public Component getListCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int index) {
// Create here a JLabel with the text
// Create here a JCheckBox
// Add them to a layoutmanager
return this;
}
public void setSelected(int i, boolean flag)
{
this.selected[i] = flag;
}
}
Si los datos tienen un carácter jerárquico, considere componente Outline
NetBeans', discutido en al anunciar la nueva oscilación Tabla árbol y en este respuesta . Aquí está la Versión actual Desarrollo de la API.
Para lograr la funcionalidad descrita, finalmente decidió "abuso" del JMenuBar
y añadir a varias JCheckBoxMenuItems
. La interfaz gráfica de usuario a continuación, se ajusta perfectamente al propósito (al menos para mí), es sólo el manejo de la ItemEvent que los riesgos para convertirse en un poco molesto.
(finalmente allí, define una lógica bit a través de los artículos, y luego puede restringir a mí mismo para el manejo de sólo un tipo de evento)