Получение максимума и минимума из heightProperty () и widthProperty () - PullRequest
1 голос
/ 06 апреля 2020

Есть ли какой-нибудь код, например Math.max(num1, num2), но для сравнения двух DoubleProperty? В настоящее время я пытаюсь отобразить круг (который простирается от панели), который может автоматически изменять свой размер в соответствии с размером окна. Я хотел бы попытаться получить меньшее значение между двумя для установки радиуса круга.

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.shape.Circle;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class DisplayCircle extends Application {
   @Override
   public void start(Stage primaryStage) {
      Scene scene = new Scene(ResizableCircle(), 400, 300);
      primaryStage.setTitle("DisplayCircle");
      primaryStage.setScene(scene);
      primaryStage.show();
   }

   public class ResizableCircle extends Pane {
      public ResizableCircle() {
         Circle c = new Circle(getWidth()/2, getHeight()/2);
         c.centerXProperty().bind(widthProperty().subtract(10));
         c.centerYProperty().bind(heightProperty().subtract(10));


         // Need help setting the radius and binding it


         getChildren().add(c);
   }
}

1 Ответ

3 голосов
/ 06 апреля 2020

Вы можете использовать Bindings.max(ObservableNumberValue op1, ObservableNumberValue op2) и Bindings.min(ObservableNumberValue op1, ObservableNumberValue op2), чтобы связать ObservableNumberValue с минимумом или максимумом двух других наблюдаемых значений:

DoubleProperty min = new SimpleDoubleProperty();
DoubleProperty max = new SimpleDoubleProperty();

min.bind(Bindings.min(widthProperty(), heightProperty()));
max.bind(Bindings.max(widthProperty(), heightProperty()));
...