2011-03-06 8 views
8

Hola, tengo que elegir un elemento de una JList a otra, eliminándolo del primer El método que he creado inserta solo un elemento, sobrescribe el último y no elimina el elemento seleccionado desde el primer JList Aquí está el código:JLista añadir/quitar artículo

primera lista

private javax.swing.JList listaRosa; 

poblados por este método:

private void visualizzaRosaButtonvisualizzaRosa(java.awt.event.ActionEvent evt) {              
    // TODO add your handling code here: 
    visualizzaSquadraSelezionata(); 
    String fileSquadra; 
    fileSquadra = squadraDaVisualizzare.getText(); 
    DefaultListModel listModel = new DefaultListModel(); 
    try { 
     FileInputStream fstream = new FileInputStream("C:/Users/Franky/Documents/NetBeansProjects/JavaApplication5/src/javaapplication5/Rose/"+fileSquadra+""); 
     // Get the object of DataInputStream 
     DataInputStream in = new DataInputStream(fstream); 
     BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
     String strLine; 
     //Read File Line By Line 
     while ((strLine = br.readLine()) != null) { 
      listModel.addElement(strLine); 
      System.out.println(strLine); 
     } 
     listaRosa.setModel(listModel); 
     //Close the input stream 
     in.close(); 
    } catch (Exception e) { 
    } 

los s Lista egundo, donde quiero insertar la eliminación de elementos de la primera:

private javax.swing.JList listaTitolari 

Aquí está el código no trabaja:

private void aggiungiTitolareButtonActionPerformed(java.awt.event.ActionEvent evt) {              
    // TODO add your handling code here: 
    DefaultListModel listModel = new DefaultListModel(); 
    String daInserire; 
    listModel.addElement(listaRosa.getSelectedValue()); 
    listModel.removeElement(listaRosa.getSelectedValue()); 
    listaTitolari.setModel(listModel); 
} 

Gracias

Respuesta

16

El problema es

listModel.addElement(listaRosa.getSelectedValue()); 
listModel.removeElement(listaRosa.getSelectedValue()); 

se puede estar agregando un elemento y eliminándolo inmediatamente ya que ambas operaciones de agregar y quitar están en el mismo listModel.

Trate

private void aggiungiTitolareButtonActionPerformed(java.awt.event.ActionEvent evt) {              

    DefaultListModel lm2 = (DefaultListModel) listaTitolari.getModel(); 
    DefaultListModel lm1 = (DefaultListModel) listaRosa.getModel(); 
    if(lm2 == null) 
    { 
     lm2 = new DefaultListModel(); 
     listaTitolari.setModel(lm2); 
    } 
    lm2.addElement(listaTitolari.getSelectedValue()); 
    lm1.removeElement(listaTitolari.getSelectedValue());   
} 
+0

se retira de la primera, pero sobrescribe la segunda lista .... – Franky

+0

@Franky bien. Lo he editado un poco. prueba esto. –

+0

todavía escribiendo el elemento insertado :( – Franky

10

El mejor y más fácil manera de limpiar un JList es:

myJlist.setListData(new String[0]); 
+1

Esto reemplazará el ListModel, que puede no ser deseable. – dmolony

+1

@dmoloney según el comentario anterior, dijeron "... para borrar un JLIST". Esta solución logra eso. – Menefee

Cuestiones relacionadas