llenar eventos data java css tableview javafx

eventos - tablecolumn javafx



AlineaciĆ³n de texto TableView de JavaFX (5)

Como puede ver en la imagen, la alineación de texto para cada columna se establece en alineación izquierda. ¿Hay alguna manera de cambiar esto? Hasta ahora lo he intentado con mi archivo CSS:

#Cols{ text-align: right; }

También he intentado:

#Cols{ -fx-text-alignment: right; }

¿Alguien sabe cómo puedo cambiar la alineación a la derecha?


Alineación de todas las columnas de la tabla:

A partir de JavaFX-8, puede usar la table-column selector de CSS recientemente definida,

#my-table .table-column { -fx-alignment: CENTER-RIGHT; }

Para JavaFX-2, para lograr esto, defina un selector de CSS:

#my-table .table-cell { -fx-alignment: CENTER-RIGHT; /* The rest is from caspian.css */ -fx-skin: "com.sun.javafx.scene.control.skin.TableCellSkin"; -fx-padding: 0.166667em; /* 2px, plus border adds 1px */ -fx-background-color: transparent; -fx-border-color: transparent -fx-table-cell-border-color transparent transparent; -fx-border-width: 0.083333em; /* 1 */ -fx-cell-size: 2.0em; /* 24 */ -fx-text-fill: -fx-text-inner-color; }

y establezca el id de la vista de tabla .

tableView.setId("my-table");


Alineación de la columna de una sola tabla:

A partir de JavaFX-8, puede aplicar el estilo directamente a TableColumn ,

firstTextCol.setStyle( "-fx-alignment: CENTER-RIGHT;");

o con css,

firstTextCol.getStyleClass().add( "custom-align");

dónde

.custom-align { -fx-alignment: center-right; }

Para JavaFX-2,
Para aplicar diferentes alineaciones a diferentes columnas, debe configurar la fábrica de celda para esa columna. Por ejemplo, suponga que la primera columna de su tabla debe estar alineada a la izquierda, mientras que otras columnas usan la alineación predeterminada de la tabla ( CENTER-RIGHT en su caso).

firstTextCol.setCellFactory(new Callback<TableColumn, TableCell>() { public TableCell call(TableColumn p) { TableCell cell = new TableCell<Person, String>() { @Override public void updateItem(String item, boolean empty) { super.updateItem(item, empty); setText(empty ? null : getString()); setGraphic(null); } private String getString() { return getItem() == null ? "" : getItem().toString(); } }; cell.setStyle("-fx-alignment: CENTER-LEFT;"); return cell; } });


Incluso esto tiene dos años, aquí hay otra respuesta. Para cada columna de tabla existe una clase de estilo CSS predeterminada .table-column , por lo que si desea cambiar las columnas de la tabla completa para justificar el centro a la derecha, solo es necesario poner esto en una hoja de estilo o estilo en línea:

.table-column { -fx-alignment: CENTER_RIGHT; }

y si tiene una columna que debe alinearse de otra manera, como un encabezado de fila, no hay ningún problema en absoluto, adjunte un id a esta columna como rowHeading y escriba su estilo o estilo en línea:

#rowHeading { -fx-alignment: CENTER_LEFT; }

y debe dejarse centrado No hay necesidad de una gran codificación.


Intenté esto y funciona

@FXML private TableColumn<BookingData,String>colClientMobile; //Some code colClientMobile.setCellFactory(new Callback<TableColumn<BookingData, String>, TableCell<BookingData, String>>() { @Override public TableCell<BookingData, String> call(TableColumn<BookingData, String> param) { return new TableCellFormat(); } }); private class TableCellFormat extends TableCell<BookingData, String>{ @Override protected void updateItem(String item, boolean empty) { super.updateItem(item, empty); this.setText(item); this.setAlignment(Pos.CENTER_RIGHT); } }


Una solución rápida es seleccionar la columna en SceneBuilder, y simplemente agregar la propiedad al campo de estilo


solía

cell.setAlignment(Pos.CENTER_RIGHT);

en lugar de

cell.setStyle("-fx-alignment: CENTER-LEFT;");

Pero si hay CSS para esto, ¿qué no puedo poner fx: id en una columna y luego poner la alineación en un archivo CSS? Eso es mucho código anterior solo para establecer la alineación de columna.