To make width of the Rectangle, rect, follow parent window resizing automatically, we can call rect.widthProperty().bind() with parent's widthProperty.
rect.widthProperty().bind(scene.widthProperty().subtract(20));
Auto adjust width of Rectangle when parent resized |
package javafxrect;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.RectangleBuilder;
import javafx.stage.Stage;
/**
* @web http://java-buddy.blogspot.com/
*/
public class JavaFXRect extends Application {
@Override
public void start(Stage primaryStage) {
//Group root = new Group();
VBox root = new VBox(5); // spacing = 5
root.setPadding(new Insets(10, 10, 10, 10));
Scene scene = new Scene(root, 300, 250);
Button btn = new Button();
btn.setText("java-buddy.blogspot.com");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
//Create Rectangle with RectangleBuilder
Rectangle rect = RectangleBuilder
.create()
.width(scene.getWidth() - 20)
.height(50)
.fill(Color.AZURE)
.stroke(Color.rgb(150, 150, 150))
.strokeWidth(3)
.build();
//adjust rect width follow scene resizing
rect.widthProperty().bind(scene.widthProperty().subtract(20));
root.getChildren().addAll(rect, btn);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
No comments:
Post a Comment