Я хочу переместить текст так, чтобы при отображении изображения он находился в правом нижнем углу панели. Я не совсем уверен, как установить позицию - PullRequest
1 голос
/ 05 мая 2020

Когда я запускаю программу, текст появляется в центре изображения. Я хочу переместить его в правый нижний угол, но ничего не происходит, когда я пытаюсь изменить положение. Я не уверен, как установить позицию текста.

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.scene.paint.Color;
import javafx.scene.shape.Ellipse;
import javafx.scene.text.Text;
import javafx.scene.text.Font;

public class Art extends Application {
    public static void main(String[] args) {
        launch(args);
    }
    @Override
    public void start(Stage primaryStage) {

        //this will create a canvas with a width of 400px and height of 200px
        StackPane pane = new StackPane();
        Scene scene = new Scene(pane, 400, 250);      
        primaryStage.setScene(scene);
        primaryStage.show();


        //draw three ellipses with different colors
        Ellipse e1 = new Ellipse(150, 0, 100, 25);
        e1.setFill(Color.PINK);

        Ellipse e2 = new Ellipse(75, 25, 75, 25);
        e2.setFill(Color.DARKGRAY);

        Ellipse e3 = new Ellipse(0, 50, 40, 25);
        e3.setFill(Color.GRAY);

       /*this will set the color, font and size of the text and place it at the 
        lower right corner*/
       Text t1 = new Text(150, 300, "text");
       t1.setFont(Font.font("Century Gothic", 14));
       t1.setStroke(Color.BLACK);

        //display the stage
        pane.getChildren().addAll(e1, e2, e3, t1);  
        primaryStage.setScene(scene);
        primaryStage.show();
    }           
}

1 Ответ

2 голосов
/ 06 мая 2020

Как @Slaw предложил в своем комментарии к вашему вопросу, приведенный ниже код использует несколько разных макетов для достижения того, чего вы хотите. Я предлагаю вам обратиться к javado c для получения подробной информации о том, как они работают.

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.NodeOrientation;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Ellipse;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Art extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        StackPane pane = new StackPane();

        // draw three ellipses with different colors
        Ellipse e1 = new Ellipse(150, 0, 100, 25);
        e1.setFill(Color.PINK);

        Ellipse e2 = new Ellipse(75, 25, 75, 25);
        e2.setFill(Color.DARKGRAY);

        Ellipse e3 = new Ellipse(0, 50, 40, 25);
        e3.setFill(Color.GRAY);

        /*
         * this will set the color, font and size of the text and place it at the lower
         * right corner
         */
        Text t1 = new Text(150, 300, "text");
        t1.setFont(Font.font("Century Gothic", 14));
        t1.setStroke(Color.BLACK);
        FlowPane flow = new FlowPane(t1);
        flow.setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);
        flow.setPadding(new Insets(0.0d, 0.0d, 20.0d, 20.0d));

        // display the stage
        pane.getChildren().addAll(e1, e2, e3);
        BorderPane root = new BorderPane(pane);
        root.setBottom(flow);
        Scene scene = new Scene(root, 400, 250);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...