TornadoFX – eliminar elemento con ContextMenu hacer clic derecho

Así que tengo una vista de tabla que muestra una list de list de counts observedArrayList Account(name, login, pass) , esas son classs de datos. Cuando hago clic con el button derecho en una celda, aparece una opción de eliminar. Lo que quiero hacer es eliminar esa Account de la list de observedArrayList

Solo que no puedo encontrar ninguna forma de hacer esto. No tengo experiencia con JavaFX o TornadoFX y tampoco puedo encontrar la respuesta con google o en las guías y documentos de TornadoFX.

Este es mi código:

 class ToolView : View() { override val root = VBox() companion object handler { //val account1 = Account("Google", "martvdham@gmail.com", "kkk") //val account2 = Account("Google", "martvdham@gmail.com", "Password") var accounts = FXCollections.observableArrayList<Account>( ) var gson = GsonBuilder().setPrettyPrinting().create() val ggson = Gson() fun writeData(){ FileWriter("accounts.json").use { ggson.toJson(accounts, it) } } fun readData(){ accounts.clear() FileReader("accounts.json").use{ var account = gson.fromJson(it, Array<Account>::class.java) if(account == null){return} for(i in account){ accounts.add(i) } } } } init { readData() borderpane { center { tableview<Account>{ items = accounts column("Name", Account::name) column("Login", Account::login) column("Password", Account::password) contextMenu = ContextMenu().apply{ menuitem("Delete"){ selectedItem?.apply{// HERE IS WHERE THE ITEM DELETE CODE SHOULD BE} } } } } bottom{ button("Add account").setOnAction{ replaceWith(AddView::class, ViewTransition.SlideIn) } } } } } 

¡Gracias!

Para aclarar la respuesta de @ Martacus, en su caso solo necesita replace // HERE IS WHERE THE ITEM DELETE CODE SHOULD BE con accounts.remove(this) y usted está en el negocio.

También puedes replace la línea

 selectedItem?.apply{ accounts.remove(this) } 

con

 selectedItem?.let{ accounts.remove(it) } 

Desde mi experiencia, let es más común que apply cuando solo estás usando un valor en lugar de configurar un receptor.


Tenga en count que el process será diferente si la list de accounts se construye de forma asincrónica y se copy en, que es el comportamiento pnetworkingeterminado de asyncItems { accounts } .

selectedItem es el elemento que ha seleccionado / right-click. Entonces puedes usar arraylist.remove(selectedItem)

  • TornadoFX cómo enlazar Node style (o styleClass) a una propiedad?
  • tornadofx EventBus expande la fila de la tabla usando el object tableview
  • Cómo ejecutar tornado fx hello world con java 7
  • Cómo mostrar datos usando la vista de tree de TornadoFX
  • Cómo cambiar la vista en TornadoFx
  • TornadoFX con TestFX cierra la vista después de cada TestCase
  • TornadoFX: permite copyr un elemento de una vista de list al portapapeles
  • ¿Cuál es la mejor práctica para crear un componente de IU personalizado en tornadofx?
  • ¿Cómo llenar el ancho de la tabla disponible con columnas?
  • Cómo configurar una aplicación Gluon con Kotlin y Tornado FX
  • ¿Cómo agregar leyenda secundaria al gráfico JavaFX?