Columnas de tabla dinámica

¿Cómo debo proceder cuando quiero generar una tabla a partir de la list de lists que contiene solo cadenas (por ejemplo, datos de csv)? Los nombres de las columnas no importan. De todos los ejemplos proporcionados vi solo elementos de tabla bindings para un model específico (que no encaja allí ya que tengo un número desconocido y nombres de columnas).

Si ya conoce los nombres de las columnas y el tipo de datos, sugeriría que los codifique. Si no sabe nada sobre el formatting y simplemente desea crear un TableView con columnas completamente dinámicas, puede usar el índice en los datos de csv como un extractor para crear valores de StringProperty para sus datos:

 class MyView : View() { val data = FXCollections.observableArrayList<List<String>>() val csvController: CsvController by inject() init { runAsync { csvController.loadData() } ui { entries -> // Generate columns based on the first row entries.first().forEachIndexed { colIndex, name -> root.column(name, String::class) { value { row -> SimpleStringProperty(row.value[colIndex]) } } } // Assign the extracted entries to our list, skip first row data.setAll(entries.drop(1)) } } override val root = tableview(data) } class CsvController : Controller() { // Load data from CSV file here, we'll use som static data // where the first row is the headers fun loadData() = listOf( listOf("Name", "Age"), listOf("John", "42"), listOf("Jane", "24") ) } 

Aplicación resultante

Este enfoque solo sería bueno para visualizar los datos en un file CSV. Si necesita editar o manipular los datos, el conocimiento de los types de datos iniciales produciría una aplicación less confiable IMO 🙂

  • TornadoFX - eliminar elemento con ContextMenu hacer clic derecho
  • Tornadofx - Cómo pasar el parámetro a Fragment en cada instancia
  • Animación consecutiva en TornadoFX?
  • Enlazando una vista a una propiedad de controller cambiante
  • Cómo crear una pantalla de inicio en tornadofx
  • Desplazamiento suave en JavaFX TableView
  • No se puede usar fontawesomefx con kotlin y tornadofx
  • Kotlin y TornadoFX: ¿une una propiedad observable a una function de recostackción?
  • ¿Cómo puedo crear un encabezado de columna nested / dividido usando TornadoFx?
  • TornadoFX: permite copyr un elemento de una vista de list al portapapeles
  • Tornadofx Javafx - Cómo volver a cargar una vista / componente