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: permite copyr un elemento de una vista de list al portapapeles
  • TornadoFx: que realiza mejor FXML o type-CSS
  • ¿Cómo cancelar la suscripción a events en TornadoFX?
  • TornadoFX: Type-Safe CSS con otras bibliotecas
  • Crea una vista arbitraria
  • Cómo mostrar datos usando la vista de tree de TornadoFX
  • Cómo inyectar ItemViewModel en tornadoFx
  • TornadoFX JavaFX Sync Desplazarse por las vistas de tabla
  • java.lang.ClassNotFoundException: no encontró la class "com.my.app.example.Main" en la ruta: DexPathList
  • En TornadoFX, ¿cómo puedo separar layouts en diferentes classs y luego usarlos en el generador?
  • Context de reinicio de JavaFX