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);
}
}
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.