Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I insert text into a shape in Javafx?

Tags:

java

javafx

Using JavaFX I have created a simple rectangle object, and I want to be able to put a text object inside that rectangle, and for it to automatically stay aligned within the rectangle. The code I have to draw the rectangle is:

public static Scene createScene() {
        Group root = new Group();
        Scene scene = new Scene(root, Color.ALICEBLUE);

        Rectangle rectangle_red = new Rectangle();

        rectangle_red.setFill(Color.TRANSPARENT);
        rectangle_red.setStroke(Color.BLACK);
        rectangle_red.setX(50);
        rectangle_red.setY(50);
        rectangle_red.setWidth(200);
        rectangle_red.setHeight(100);
        rectangle_red.setCursor(Cursor.HAND);
        rectangle_red.setOnMousePressed(circleOnMousePressedEventHandler);
        rectangle_red.setOnMouseDragged(circleOnMouseDraggedEventHandler);        

        root.getChildren().add(rectangle_red);    

        return scene;
    }

The Handlers I have attached to the rectangle allow me to drag the rectangles anywhere in the window. How do I place text inside the rectangle such that it stays aligned as I drag the shape around the screen?

like image 653
John Seed Avatar asked Oct 29 '17 05:10

John Seed


People also ask

How do I add text to JavaFX?

Adding Text. To add a text object to your application, use any of the constructors shown in Example 1 through Example 3. Text t = new Text (10, 20, "This is a text sample"); You can also create text objects by using the javafx.

How do you wrap text in JavaFX?

As a solution you can wrap the text within the width of the window by setting the value to the property wrapping with, using the setWrappingWidth() method. This method accepts a double value representing the width (in pixels) of the text.

What is the difference between text and label in JavaFX?

A Text is a geometric shape (like a Rectangle or a Circle), while Label is a UI control (like a Button or a CheckBox). In Swing, geometric shapes were restricted to the painting mechanism, while in JavaFX they can be used in more generic ways. And you can use a Text clipping, giving the node shape by the text.


1 Answers

As illustrated in the last example seen here, the Animation Basics example TimelineEvents does this by adding a Circle and some Text to a StackPane, which centers its children by default. The stack can then be moved within an enclosing Group as a unit.

final Circle circle = new Circle(…);
final Text text = new Text (…);
final StackPane stack = new StackPane();
stack.getChildren().addAll(circle, text);
…
stack.setLayoutX(30);
stack.setLayoutY(30);

image

like image 59
trashgod Avatar answered Sep 30 '22 13:09

trashgod