Java 8+ реализация
RT-21683 Allow to change line-to-line spacing был реализован для добавления интервала между функцией строки JavaFX Java 8.
Линия spacibg API определена на Text, TextFlow и Labeled узлах через свойство lineSpacing и связанные с ним геттеры и сеттеры. Интервал определяется в пикселях, как и остальные макеты JavaFX.
Java 2.2- реализация
Если вы не можете использовать Java 8+, вам необходимо будет выполнять межстрочный интервал себя, например, Установив интервал на VBox с отдельными текстовыми узлами для каждой строки.
Обсуждение единичных измерений в JavaFX
Кажется, что существует соответствующее (допускающее применение стиля) CSS свойство? Если он задан в пикселях, как мне сделать это с учетом тонов
Свойства css работают с em-устройствами, если вы их используете. См., Например, таблицу стилей по умолчанию modena.css, которая измеряет почти все размеры в единицах em. Вот почему, если вы просто используете стили по умолчанию без дополнительного пиксельного макета, то, если вы измените размер корневого шрифта, все в вашем макете автоматически масштабируется.
Это только Java API и FXML, которые работают только с пиксельными единицами. Даже тогда система JavaFX достаточно умна, чтобы знать (по крайней мере, на некоторых машинах), что она работает на дисплее HiDPI (например, сетчатке OS X), так что, например, pixel units are automatically doubled for the retina display (in Java 8).
Если вы используете FXML, вы можете use expression bindings как способ определить свою собственную систему единиц.
Будущие версии JavaFX могут обеспечить дополнительную поддержку для RT-14020 Concept for a screen resolution independent definition of a GUI.
Пример кода
Приведенный ниже пример использует Java 8, чтобы продемонстрировать использование в lineSpacing
апи и -fx-line-spacing
CSS атрибута.
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;
public class LineSpacing extends Application {
public static void main(String[] args) { launch(LineSpacing.class); }
@Override public void start(Stage stage) {
Label label = new Label(
"Power is my mistress.\n" +
"I have worked too hard at her conquest " +
"to allow anyone to take her away from me.\n" +
" - Napoleon Bonaparte");
label.setPadding(new Insets(20));
// as the default font spacing in JavaFX is 13 points,
// all of the following lines will provide the same results
// (double spacing the label text).
//
// label.setLineSpacing(13);
// label.setStyle("-fx-line-spacing: 13px;");
label.setStyle("-fx-line-spacing: 1em;");
stage.setScene(new Scene(label));
stage.show();
}
}
Я использую JavaFX 8, так что это здорово слышать. Кажется, что существует соответствующее (стилизованное) свойство css? Если он задан в пикселях, как это сделать, чтобы получать данные в формате dpi? – QuidNovi
@QuidNovi Я обновил этот ответ, чтобы ответить на ваши дополнительные вопросы. – jewelsea
Thanx много для вашего ответа. Если пиксели автоматически адаптируются к пикселам с разрешением dpi/уже независимо друг от друга, я просто буду использовать пиксели везде (код + css: я не использую fxml). – QuidNovi