図からわかるように、各列のテキストの配置は左揃えに設定されています。これを変更する方法はありますか?これまでのところ、CSSファイル内で試しました。
#Cols{
text-align: right;
}
私も試しました:
#Cols{
-fx-text-alignment: right;
}
アライメントを右に変更する方法を知っている人はいますか?
JavaFX-8以降では、新しく定義されたCSSセレクターtable-column
、
#my-table .table-column {
-fx-alignment: CENTER-RIGHT;
}
JavaFX-2の場合、これを実現するには、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;
}
tableviewのidを設定します。
tableView.setId("my-table");
JavaFX-8以降では、スタイリングをTableColumn
に直接適用できます。
firstTextCol.setStyle( "-fx-alignment: CENTER-RIGHT;");
またはCSSで、
firstTextCol.getStyleClass().add( "custom-align");
どこで
.custom-align {
-fx-alignment: center-right;
}
JavaFX-2の場合、
異なる列に異なる配置を適用するには、その列にセルファクトリを設定する必要があります。たとえば、テーブルの最初の列を左に揃え、他の列はテーブルのデフォルトの位置合わせ(CENTER-RIGHT
あなたの場合)。
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;
}
});
これも2歳ですが、別の答えがあります。すべてのテーブル列には、デフォルトのCSSスタイルクラス.table-column
なので、テーブル列全体を変更して中央を右揃えにする場合は、これをスタイルシートまたはインラインスタイルに配置するだけで済みます。
.table-column {
-fx-alignment: CENTER_RIGHT;
}
そして、行ヘッダーのように他の方法で整列する必要がある列を取得した場合、まったく問題はありません。rowHeadingのようにこの列にidを付加し、スタイルシートまたはインラインスタイルで記述します。
#rowHeading {
-fx-alignment: CENTER_LEFT;
}
そして、中央に配置する必要があります。巨大なコーディングの必要はありません。
使った
cell.setAlignment(Pos.CENTER_RIGHT);
の代わりに
cell.setStyle("-fx-alignment: CENTER-LEFT;");
しかし、これにCSSがある場合、列にfx:idを配置してからCSSファイルに配置することはできませんか?これは、列の配置を設定するための上記の多くのコードです。
私はこれを試してみたが、うまくいく
@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);
}
}