50

ここに画像の説明を入力してください

写真でわかるように、各列のテキストの配置は左揃えに設定されています。これを変更する方法はありますか?これまでのところ、CSSファイル内で試しました。

#Cols{
    text-align: right;
}

私も試しました:

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

配置を右に変更する方法を知っている人はいますか?

4

6 に答える 6

88

すべてのテーブル列の配置:

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;
            }
        });
于 2012-11-19T14:41:48.003 に答える
8

簡単な修正は、SceneBuilderで列を選択し、プロパティをスタイルフィールドに追加することです。

ここに画像の説明を入力してください

于 2018-05-20T04:59:49.993 に答える
7

これも2歳ですが、別の答えがあります。すべてのテーブル列にはデフォルトのcssスタイルクラスが存在する.table-columnため、テーブル列全体を変更して中央を右揃えにする場合は、これをスタイルシートまたはインラインスタイルに配置するだけで済みます。

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

また、行ヘッダーなど、他の方法で配置する必要のある列がある場合は、まったく問題ありません。rowHeadingのようにこの列にIDを付加し、スタイルシートまたはインラインスタイルに書き込みます。

#rowHeading {
  -fx-alignment: CENTER_LEFT;
}

中央に配置する必要があります。巨大なコーディングは必要ありません。

于 2015-03-13T16:46:14.160 に答える
5

使用しました

cell.setAlignment(Pos.CENTER_RIGHT);

それ以外の

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

しかし、このためのCSSがある場合、列にfx:idを配置してから、その配置をCSSファイルに配置することはできませんか?これは、列の配置を設定するためだけの上記の多くのコードです。

于 2013-04-01T19:51:22.113 に答える
2

私はこれを試しました、そしてそれは働きます

@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);
    }
}
于 2013-06-21T07:35:29.180 に答える
1

これ以上簡単なことはありません。

単一の列(または任意の選択)の場合...

fxmlでstyleClassを宣言します

<TableColumn  styleClass="centered-table-column" />

次に、cssを適用します

.centered-table-column{
    -fx-alignment: center;
}

またはすべての列

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

于 2020-11-26T02:46:10.827 に答える