editable - ¿Panel con pestañas JavaFX con una vista de tabla en cada pestaña?
javafx tableview editable (1)
Hay dos problemas con su código (que veo de inmediato):
TableView
establecer una fábrica de valor de celda en cada columna de un TableView
. Sin esto, la columna no tiene ningún dato para mostrar. Entonces necesitas algo como
clmn.setCellValueFactory(cellData -> new ReadOnlyStringWrapper(cellData.getValue()));
En segundo lugar, está utilizando el mismo TableColumn
para ambas tablas. No creo que esto pueda funcionar; las celdas terminarían siendo agregadas al gráfico de escena en dos lugares diferentes (lo cual no está permitido). Crea diferentes columnas para cada tabla.
Tengo un panel con pestañas, con una tabla en cada pestaña. Agrego diferentes elementos a las tablas y solo quiero que cada pestaña me muestre los elementos respectivos de esa tabla. Pero nada aparece. Cuando depuro, puedo ver claramente el panel de pestañas, que contiene las pestañas, que contiene las vistas de tabla, que contienen los elementos correctos.
¡¿Por qué esto no funciona?!
¡Gracias!
primaryStage.setTitle("TEST");
Group root = new Group();
Scene scene = new Scene(root, 400, 300, Color.WHITE);
TableView tv1 = new TableView();
TableView tv2 = new TableView();
TableColumn<String, String> clmn = new TableColumn<>("Test");
clmn.setPrefWidth(230);
tv1.getColumns().addAll(clmn);
tv2.getColumns().addAll(clmn);
List<String> firstItems = new ArrayList<>();
firstItems.add("ONE");
firstItems.add("TWO");
firstItems.add("THREE");
tv1.setItems(FXCollections.observableArrayList(firstItems));
List<String> secondItems = new ArrayList<>();
secondItems.add("1");
secondItems.add("2");
secondItems.add("3");
tv2.setItems(FXCollections.observableArrayList(secondItems));
TabPane tabPane = new TabPane();
BorderPane mainPane = new BorderPane();
//Create Tabs
Tab tabA = new Tab();
tabA.setText("Tab A");
tabA.setContent(tv1);
tabPane.getTabs().add(tabA);
Tab tabB = new Tab();
tabB.setText("Tab B");
tabB.setContent(tv2);
tabPane.getTabs().add(tabB);
mainPane.setCenter(tabPane);
mainPane.prefHeightProperty().bind(scene.heightProperty());
mainPane.prefWidthProperty().bind(scene.widthProperty());
root.getChildren().add(mainPane);
primaryStage.setScene(scene);
primaryStage.show();
Vacío: