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 🙂

  • El elemento TornadoFx ItemViewModel es nulo
  • tornadofx EventBus expande la fila de la tabla usando el object tableview
  • Enlazando una vista a una propiedad de controller cambiante
  • java.lang.ClassNotFoundException: no encontró la class "com.my.app.example.Main" en la ruta: DexPathList
  • La compilation de Gradle no puede encontrar tornadofx en Linux
  • Cómo mostrar datos usando la vista de tree de TornadoFX
  • No se puede hacer que el nodo se centre en un StackPane con TornadoFX
  • TornadoFX JavaFX Sync Desplazarse por las vistas de tabla
  • ¿Hay alguna manera de vincular una propiedad a appConfig en tornadofx?
  • En TornadoFX, ¿cómo puedo vincular las properties de BigDecimal a otra propiedad de BigDecimal usando objectBinding?
  • ¿Cómo llenar el ancho de la tabla disponible con columnas?