Собственно уже n-ый день мучаюсь с размером шрифта. Вот ситуация: на обычный AnchorPane добавил обычную кнопку и поставил все якори по 30. Теперь, когда я буду изменять размер окна, размер кнопки будет меняться. Но вот размер шрифта не меняется! Попробовал уже следующие варианты.
new ScalableContentPane().getContentPane, а ещё он странно изменял свой размер и смотрелось это так себе...Такие дела... Жду ваших предложений и решений, если что-то непонятно - пишите, уточню. Вот на всякий случай код...
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
public class FontSample extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
AnchorPane anchorPane = new AnchorPane();
anchorPane.setPrefSize(900, 700);
Button button = new Button("MrButton");
AnchorPane.setTopAnchor(button, 30.0);
AnchorPane.setRightAnchor(button, 30.0);
AnchorPane.setBottomAnchor(button, 30.0);
AnchorPane.setLeftAnchor(button, 30.0);
anchorPane.getChildren().add(button);
primaryStage.setScene(new Scene(anchorPane));
primaryStage.show();
}
}
В общем нашёл способ, который обходит проблему пункта 1. Вот такой код
import javafx.application.Application;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.AnchorPane;
import javafx.scene.text.Font;
import javafx.stage.Stage;
public class FontSample extends Application {
private DoubleProperty doubleProperty = new SimpleDoubleProperty(12);
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
AnchorPane anchorPane = new AnchorPane();
anchorPane.setPrefSize(900, 700);
Button button = new Button("MrButton");
AnchorPane.setTopAnchor(button, 30.0);
AnchorPane.setRightAnchor(button, 30.0);
AnchorPane.setBottomAnchor(button, 30.0);
AnchorPane.setLeftAnchor(button, 30.0);
anchorPane.getChildren().add(button);
button.layoutBoundsProperty().addListener((observable, oldValue, newValue) -> {
button.setFont(Font.font(Math.sqrt(newValue.getHeight() * 10)));
});
primaryStage.setScene(new Scene(anchorPane));
primaryStage.show();
}
}
Там формулу вычисления размера шрифта естественно можете сами подобрать, но мне на скорую руку эта подошла, а если ещё немного запариться, то можете сделать практически что хотите...
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники