java fxでテーブルビューの列にフォントを設定する方法. 3 列のテーブルがあり、列ごとに異なるフォントを設定したいと考えています。また、実行時にフォントを変更することは可能ですか。いくつかのサンプルコードを手伝ってください。
3 に答える
表の列スタイルの変更:
セル項目のレンダリングをカスタマイズするには、 TableColumn#setCellFactory()を使用する必要があります。
たとえば、このPerson クラスのようなデータモデル:
// init code vs..
TableColumn firstNameCol = new TableColumn("First Name");
firstNameCol.setMinWidth(100);
firstNameCol.setCellValueFactory(new PropertyValueFactory<Person, String>("firstName"));
firstNameCol.setCellFactory(getCustomCellFactory("green"));
TableColumn lastNameCol = new TableColumn("Last Name");
lastNameCol.setMinWidth(100);
lastNameCol.setCellValueFactory(new PropertyValueFactory<Person, String>("lastName"));
lastNameCol.setCellFactory(getCustomCellFactory("red"));
table.setItems(data);
table.getColumns().addAll(firstNameCol, lastNameCol);
// scene create code vs..
そして一般的なgetCustomCellFactory()
方法:
private Callback<TableColumn<Person, String>, TableCell<Person, String>> getCustomCellFactory(final String color) {
return new Callback<TableColumn<Person, String>, TableCell<Person, String>>() {
@Override
public TableCell<Person, String> call(TableColumn<Person, String> param) {
TableCell<Person, String> cell = new TableCell<Person, String>() {
@Override
public void updateItem(final String item, boolean empty) {
if (item != null) {
setText(item);
setStyle("-fx-text-fill: " + color + ";");
}
}
};
return cell;
}
};
}
表の列ヘッダー スタイルの変更:
TableView
caspian.css
JavaFX の他のコントロールと同様に、jfxrt.jar にバンドルされているという名前の組み込みスタイル シートを使用します。「JavaFX 2 と CSS クラス」の回答を参照してください。
列のフォント スタイルを変更するには、デフォルトのスタイルをオーバーライドするか、カスタマイズすることができます
。
.table-view .column-header{
-fx-text-fill: -fx-selection-bar-text;
-fx-font-size: 16;
-fx-font-family: "Arial";
}
カスタマイズ:
#my-custom .table-view .column-header {
-fx-text-fill: red;
-fx-font-size: 26;
-fx-font-family: "Arial";
}
アプリ内のすべての効果をオーバーライドTableView
します。したがって、カスタマイズしたい場合は、複数のスタイルを定義したら、次のように実行時にカスタム スタイルを任意のテーブルビューに適用できます。
myTableView.setId("my-custom");
...
// Apply another style at runtime
myTableView.setId("my-custom2");
スタイルシートファイルを定義してアプリにロードする方法については、「JavaFX シーンの背景画像を設定する方法」の投稿を参照してください。
ただし、異なる列に異なるスタイルを適用するには、より多くの労力が必要だと思います。
fxmlまたはcssファイルを使用してフォントの色を設定できます......
# .mainFxmlClass {
-fx-font-family:nyala,Tahoma,Arial,Helvetica,sans-serif;
-fx-font-size:1.13em;
}
.label{
-fx-font-size:1.3em;
}
fxml ファイルで .lable または .mainFxmlClass を呼び出して使用する
列1にこのstlye1を使用し、column2にスタイル2を使用するように指定するスタイル(構文)
cssで定義したスタイルクラスを適用したセルを提供するカスタムセルファクトリを提供します。リンクされたドキュメントには、これを実現するための十分な情報を提供する例が含まれています。