2017-10-09 3 views
0

Chaque fois que j'ajoute un élément via la zone de liste déroulante dans tableview, après le défilement, les éléments précédents de la zone de liste déroulante sont effacés. Comment résoudre ce problème. Suis JavaFx. Mes objets disparaissent chaque fois qu'il défile.Dans la vue de table, le défilement efface les éléments précédents sélectionnés avec la zone de liste déroulante

ici Mon code

private void Showtabledata() { 

    meta=FXCollections.observableArrayList(); 
    meta1=FXCollections.observableArrayList(); 
    try { 
     Connection conn = DB.getConnection(); 
     ResultSet rs2 = conn.createStatement().executeQuery("SELECT * FROM testgroup_master"); 
     while (rs2.next()) { 
      String test=rs2.getString("groupname"); 
      meta1.add(test); 
      meta.add(new Patienttabledetails(rs2.getString("groupname"))); 

     } 
    } catch (SQLException ex) { 
     System.err.println("Error" + ex); 
    } 
    testCat_tbl.setCellFactory(ComboBoxTableCell.forTableColumn(new DefaultStringConverter(),meta1)); 
    testCat_tbl.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Patienttabledetails, String>>() 

     { 
      @Override 
      public void handle(TableColumn.CellEditEvent<Patienttabledetails, String> event) { 
       System.out.println("Value"+event.getNewValue()); 
      } 
     }); 
    table1.setEditable(true); 
    table1.setItems(null); 
    table1.setItems(meta); 

} 

Comment puis-je éviter de disparaître des valeurs dans la boîte combo?

Image 1image 2 image 3

Au-dessus des captures d'écran montrant les erreurs. Chaque fois que je fais défiler les éléments sélectionnés ci-dessus, les valeurs disparaissent.

+1

très probablement quelque chose de mal dans le code que vous ne montrez pas - s'il vous plaît lisez http://stackoverflow.com/help/mcve et agissez en conséquence :) – kleopatra

Répondre

0

Si vous spécifiez un gestionnaire onEditCommit, la volonté ComboBoxTableCell ne tente pas de définir la nouvelle valeur à la propriété sont retournés sous forme la cellValueFactory lorsqu'une nouvelle valeur est sélectionnée dans le ComboBox.

Cela signifie que vous devez faire vous-même, si vous spécifiez un gestionnaire onEditCommit pour la nouvelle valeur à stocker dans votre classe d'article:

testCat_tbl.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Patienttabledetails, String>>() 

    { 
     @Override 
     public void handle(TableColumn.CellEditEvent<Patienttabledetails, String> event) { 
      System.out.println("Value"+event.getNewValue()); 

      // TODO: replace setter name by suitable setter of your Patienttabledetails class here 
      event.getRowValue().setSomeProperty(event.getNewValue()); 
     } 
    }); 
+0

merci, ça aide pour moi. –