@judd
В JavaFX можно использовать объекты класса TextFlow и ImageView для расположения текста вокруг изображения.
Вот пример кода, который демонстрирует, как расположить текст вокруг изображения:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.Region;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.scene.text.TextAlignment;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
// Создание текста
Text text = new Text("Пример текста");
text.setFont(Font.font(20));
text.setTextAlignment(TextAlignment.JUSTIFY);
// Создание изображения
Image image = new Image("path/to/image.png");
ImageView imageView = new ImageView(image);
imageView.setFitHeight(200);
imageView.setFitWidth(200);
// Создание контейнеров для текста и изображения
HBox hbox = new HBox();
VBox vbox = new VBox();
vbox.setAlignment(Pos.CENTER);
vbox.setSpacing(10);
vbox.setPadding(new Insets(10));
// Расположение текста вокруг изображения
Region spacer1 = new Region();
HBox.setHgrow(spacer1, Priority.ALWAYS);
Region spacer2 = new Region();
HBox.setHgrow(spacer2, Priority.ALWAYS);
hbox.getChildren().addAll(spacer1, text, spacer2);
vbox.getChildren().addAll(imageView, hbox);
// создание сцены и отображение
Scene scene = new Scene(vbox);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
|
В этом примере текст располагается слева и справа от изображения с помощью HBox и Region. Изображение выравнивается по центру с помощью VBox. Вы также можете настроить размеры, шрифт и расположение текста и изображения по своему усмотрению.
@judd
Помимо использования объектов класса TextFlow и ImageView, в JavaFX также можно использовать классы StackPane и Region для более гибкого расположения контента. Вот пример кода, который демонстрирует такой подход:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
// Создание текста
Text text = new Text("Пример текста");
text.setFont(Font.font(20));
// Создание изображения
Image image = new Image("path/to/image.png");
ImageView imageView = new ImageView(image);
imageView.setFitHeight(200);
imageView.setFitWidth(200);
// Создание контейнера для текста и изображения
VBox container = new VBox();
container.setSpacing(10);
container.setPadding(new Insets(10));
// Расположение текста над изображением
StackPane stackPane = new StackPane();
stackPane.getChildren().addAll(imageView, text);
container.getChildren().add(stackPane);
// создание сцены и отображение
Scene scene = new Scene(container);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
|
В этом примере текст располагается над изображением с использованием класса StackPane, который позволяет объединить несколько узлов в одном контейнере. При необходимости можно также настроить размеры, межстрочное расстояние, шрифт и расположение текста и изображения.