Привязка текста с помощью панели в JavaFX - PullRequest
0 голосов
/ 07 июня 2018
import javafx.stage.Stage;
import javafx.application.Application;
import javafx.geometry.*;
import javafx.scene.layout.*;
import javafx.scene.shape.*;
import javafx.scene.paint.*;
import javafx.scene.Scene;
import javafx.scene.text.*;

public class PieChart extends Application{
    public void start(Stage primaryStage) {
    final double WIDTH = 600;
    final double HEIGHT = 600;
    Pane pane = new Pane();
    pane.setStyle("-fx-background-color: lightBlue");
    Arc arc1 = new Arc(WIDTH / 2, HEIGHT / 2, 200, 200, 0, 72);
    arc1.centerXProperty().bind(pane.widthProperty().divide(2));
    arc1.centerYProperty().bind(pane.heightProperty().divide(2));
    arc1.setType(ArcType.ROUND);
    arc1.setFill(Color.RED);
    Text text1 = new Text(375, 250, "Project -- 20%");

    Arc arc2 = new Arc(WIDTH / 2, HEIGHT / 2, 200, 200, 72, 36);
    arc2.centerXProperty().bind(pane.widthProperty().divide(2));
    arc2.centerYProperty().bind(pane.heightProperty().divide(2));
    arc2.setType(ArcType.ROUND);
    arc2.setFill(Color.BLUE);
    Text text2 = new Text(270, 95, "Quiz -- 10%");

    Arc arc3 = new Arc(WIDTH / 2, HEIGHT / 2, 200, 200, 108, 108);
    Text text3 = new Text(150, 250, "Midterm -- 30%");
    arc3.centerXProperty().bind(pane.widthProperty().divide(2));
    arc3.centerYProperty().bind(pane.heightProperty().divide(2));
    arc3.setType(ArcType.ROUND);
    arc3.setFill(Color.GREEN);

    Arc arc4 = new Arc(WIDTH / 2, HEIGHT / 2, 200, 200, 216, 144);
    Text text4 = new Text(300, 400, "Final -- 40%");
    arc4.centerXProperty().bind(pane.widthProperty().divide(2));
    arc4.centerYProperty().bind(pane.heightProperty().divide(2));
    arc4.setType(ArcType.ROUND);
    arc4.setFill(Color.ORANGE);
    pane.getChildren().addAll(arc1, arc2, arc3, arc4, text1, text2, text3, text4);

    Scene scene = new Scene(pane, WIDTH, HEIGHT);
    primaryStage.setTitle("Pie Chart");
    primaryStage.setScene(scene);
    primaryStage.show();
}

public static void main(String[] args) {
    Application.launch(args);
}
}

Ссылка на то, как выглядит моя программа

Привет всем, у меня есть программа, которая создает пи-диаграмму с использованием нескольких дуг и текста.Я связал значения свойств centerX и centerY с половиной ширины и высоты панели, чтобы сделать так, чтобы пи-диаграмма оставалась в центре, даже если вы перенастраиваете окно.Однако я попытался привязать свой текст к панели таким же образом, и ничего не показывалось.На данный момент я просто вручную ввел значения x и y, чтобы поместить мой текст в правильное место, однако, если я перенастраиваю окно, piChart остается в центре, а текст - нет.Как я могу отредактировать свой текст, чтобы сделать его более динамичным, если он похож на изображение в ссылке, но остается таким же, даже когда я изменяю размер окна?

...