写真でわかるように、各列のテキストの配置は左揃えに設定されています。これを変更する方法はありますか?これまでのところ、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;
}
テーブルビューの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);
}
}
これ以上簡単なことはありません。
単一の列(または任意の選択)の場合...
fxmlでstyleClassを宣言します
<TableColumn styleClass="centered-table-column" />
次に、cssを適用します
.centered-table-column{
-fx-alignment: center;
}
またはすべての列
.table-column{
-fx-alignment: center;
}