Установить шрифт в javafx
Как установить шрифт для столбца в табличном представлении в Java FX. У меня есть таблица с 3 столбцами, и я хочу установить разные шрифты для каждого из столбцов. Кроме того, возможно ли изменить шрифт во время выполнения. Пожалуйста, помогите с примером кода.
3 ответа
Изменение стиля столбца таблицы:
Вы должны использовать TableColumn#setCellFactory() для настройки рендеринга элемента ячейки.
Например, datamodel с таким классом 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
как и другие элементы управления JavaFX использует встроенную таблицу стилей с именем caspian.css
который связан с 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;
}
и вызовите и используйте.lable или.mainFxmlClass в файле fxml
какой стиль (синтаксис) указать, что для столбца 1 использовать этот стиль 1, для столбца 2 использовать стиль 2
Укажите собственную фабрику ячеек, которая предоставляет ячейки, к которым вы применили классы стилей, которые вы определили в css. Связанная документация содержит примеры, которые должны предоставить вам достаточно информации для достижения этой цели.