Реализация Java 8+
RT-21683 Разрешить изменение межстрочного интервала была реализована для добавления функция межстрочного интервала для JavaFX Java 8.
API-интерфейс line spacibg определяется на узлах Text, TextFlow и Labeled через свойство lineSpacing и связанные с ним геттеры и сеттеры. Интервал определяется в пикселях, как и остальная часть макета JavaFX.
Реализация Java 2.2
Если вы не можете использовать Java 8+, вам нужно будет самостоятельно реализовать межстрочный интервал, например Установив интервал в VBox с отдельными текстовыми узлами для каждой строки.
Обсуждение единиц измерения в JavaFX
Кажется, есть соответствующее (стилизованное) свойство css? Если он определен в пикселях, как мне сделать его с учетом dpi
css properties work могут работать с модулями em, если вы их используете. См., Например, значение по умолчанию modena.css, которая измеряет почти все размеры в единицах em. Вот почему, если вы просто используете стили по умолчанию без дополнительного макета на основе пикселей, то при изменении размера корневого шрифта все в макете автоматически масштабируется.
Только API Java и FXML работают только с пиксельными блоками. Даже в этом случае система JavaFX достаточно умна, чтобы знать (по крайней мере, на некоторых машинах), что она работает на дисплее HiDPI (например, OS X retina), так что, например, единицы пикселей автоматически удваиваются для дисплея Retina (в Java 8).
Если вы используете FXML, вы можете использовать привязки выражений как способ определить вашу собственную систему единиц.
Будущие версии JavaFX могут обеспечить дополнительную поддержку RT-14020 Concept для независимого от разрешения экрана определения GUI.
Образец кода
В приведенном ниже примере используется Java 8 для демонстрации использования атрибутов lineSpacing
api и -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();
}
}
person
jewelsea
schedule
14.08.2013