Javafx BorderPane.setCenter更改底部区域的位置

Javafx BorderPane.setCenter更改底部区域的位置,javafx,Javafx,我正在学习Javafx,在这里,我试图在屏幕的左下角显示一个模拟时钟和秒针的角度值。如果我尝试增加时钟组中被设置为BorderPane center的圆的半径,它会改变显示角度值的底部区域的位置。我原以为中心区域将保持在其区域内,即使更大的维度节点被添加(或更新)到时钟组,并且底部区域仍然可见。这是我的示例代码 import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Group;

我正在学习Javafx,在这里,我试图在屏幕的左下角显示一个模拟时钟和秒针的角度值。如果我尝试增加时钟组中被设置为BorderPane center的圆的半径,它会改变显示角度值的底部区域的位置。我原以为中心区域将保持在其区域内,即使更大的维度节点被添加(或更新)到时钟组,并且底部区域仍然可见。这是我的示例代码

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.scene.text.Text;
import javafx.scene.transform.Rotate;
import javafx.stage.Screen;
import javafx.stage.Stage;

public class MainApp extends Application {
    static BorderPane borderPane;
    static Group clock;
    public static Circle clockCircle;
    public static Line angHand;
    public static Text angText;
    public static Rotate angRotate;

    public static Label angLabel;

    public static void main(String[] args) {
        borderPane = new BorderPane();

        clock = new Group();

        clockCircle = new Circle(360, Color.RED); //increasing the radius affects other region

        angHand = new Line();
        angHand.startXProperty().bind(clockCircle.centerXProperty());
        angHand.startYProperty().bind(clockCircle.centerYProperty());
        angHand.endXProperty().bind(clockCircle.centerXProperty());
        angHand.endYProperty().bind(clockCircle.centerYProperty().subtract(clockCircle.getRadius()));

        angText = new Text();

        angRotate = new Rotate();
        angRotate.pivotXProperty().bind(clockCircle.centerXProperty());
        angRotate.pivotYProperty().bind(clockCircle.centerYProperty());

        angHand.getTransforms().addAll(angRotate);
        angText.getTransforms().addAll(angRotate);

        angLabel = new Label();
        angLabel.setText("Angle: 0");
        BorderPane.setAlignment(angLabel, Pos.BOTTOM_LEFT);

        clock.getChildren().addAll(clockCircle, angHand, angText);

        Button home = new Button();
        home.setGraphic(new ImageView(new Image(MainApp.class.getResourceAsStream("etc/home.png"))));

        borderPane.setCenter(clock);
        borderPane.setBottom(angLabel);
        borderPane.setRight(home);

        //DataReceiver objDataReceiver = new DataReceiver();
        //Thread dataRecvThread = new Thread(objDataReceiver, "DATARECVR");

        //dataRecvThread.start();

        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("CLOCK");
        primaryStage.setMaximized(true);
        primaryStage.setScene(new Scene(borderPane, Screen.getPrimary().getVisualBounds().getWidth(), Screen.getPrimary().getVisualBounds().getHeight()));
        primaryStage.show();
    }
}

您发布的代码无法编译。什么是class
DataReceiver
?就是我运行你的代码时的样子。我将“home.png”替换为一个黄色圆圈,它出现在右上角。问题出在哪里?@Abra我修改了密码。请再看一遍,特别是“时钟圈=新圈(360,颜色。红色);”这行没有区别。我仍然不明白问题出在哪里。@Abra如果我增大圆的半径,左下角的标签就看不见了。我希望borderpane的底部、右侧、左侧和顶部区域始终可见,无论中心区域中节点的大小/位置如何