Java 将节点覆盖在StackPane中的面积图上

Java 将节点覆盖在StackPane中的面积图上,java,javafx,Java,Javafx,我有一个带有图表的stackPane,我正试图覆盖一个标签以适应图表的顶部,有点像第二个轴。我已经设法将覆盖层附加到底部轴,但我不知道如何将其整齐地附加到顶部 这是实现上图的代码: private void addBases() { final Axis<Number> xAxis = chart.getXAxis(); final Axis<Number> yAxis = chart.getYAxis(); //hard code e

我有一个带有图表的stackPane,我正试图覆盖一个标签以适应图表的顶部,有点像第二个轴。我已经设法将覆盖层附加到底部轴,但我不知道如何将其整齐地附加到顶部

这是实现上图的代码:

  private void addBases() {
    final Axis<Number> xAxis = chart.getXAxis();
    final Axis<Number> yAxis = chart.getYAxis();



    //hard code example
    baseNodes.add(new BaseNode(new Label("ATCGTCTGCTACTGACTGCATGCTGACTGACTGACTGAATCGTCTGCTACTGACTGCATGCTGACTGACTGACTGAATCGTCGTGCTA"), yAxis.getLayoutBounds().getMinY(), xAxis.getLayoutBounds().getMinX()));

    }
private void addbase(){
最终轴xAxis=chart.getXAxis();
最终轴yAxis=chart.getYAxis();
//硬代码示例
添加(新的BaseNode(新标签(“ATCGTCTGCTAGCTGACTGCATGCTGATGACTGACTGACTGACTGACTGAATGCGTCTGCTACTGACTGCATGCTGTGGACTGACTGACTGAATCGTGCTA”),yAxis.getLayoutBounds().getMinY(),xAxis.getLayoutBounds().getMinX());
}
我尝试了
getMaxX()
getMaxY()
的各种组合,但它们似乎会使节点消失。(我想它超出了窗口的范围)

导入javafx.application.application;
导入javafx.scene.scene;
导入javafx.scene.chart.AreaChart;
导入javafx.scene.chart.NumberAxis;
导入javafx.scene.chart.XYChart;
导入javafx.scene.control.Label;
导入javafx.scene.layout.Pane;
导入javafx.scene.layout.StackPane;
导入javafx.stage.stage;
公共类AreaChartSample扩展应用程序
{
@凌驾
公众假期开始(阶段)
{
阶段。设置标题(“面积图样本”);
最终数字xis xAxis=新数字xis(1,31,1);
最终数字axis yAxis=新数字axis();
最终面积图ac
=新面积图(X轴、Y轴);
ac.setTitle(“温度监测(摄氏度)”);
XYChart.seriesApril=新的XYChart.Series();
序列四月集名(“四月”);
seriesApril.getData().add(新的XYChart.Data(1,4));
seriesApril.getData().add(新的XYChart.Data(3,10));
seriesApril.getData().add(新的XYChart.Data(6,15));
seriesApril.getData().add(新的XYChart.Data(9,8));
seriesApril.getData().add(新的XYChart.Data(12,5));
seriesApril.getData().add(新的XYChart.Data(15,18));
seriesApril.getData().add(新的XYChart.Data(18,15));
seriesApril.getData().add(新的XYChart.Data(21,13));
seriesApril.getData().add(新的XYChart.Data(24,19));
seriesApril.getData().add(新的XYChart.Data(27,21));
seriesApril.getData().add(新的XYChart.Data(30,21));
XYChart.Series序列可以=新的XYChart.Series();
seriesMay.setName(“五月”);
seriesMay.getData().add(新的XYChart.Data(1,20));
seriesMay.getData().add(新的XYChart.Data(3,15));
seriesMay.getData().add(新的XYChart.Data(6,13));
seriesMay.getData().add(新的XYChart.Data(9,12));
seriesMay.getData().add(新的XYChart.Data(12,14));
seriesMay.getData().add(新的XYChart.Data(15,18));
seriesMay.getData().add(新的XYChart.Data(18,25));
seriesMay.getData().add(新的XYChart.Data(21,25));
seriesMay.getData().add(新的XYChart.Data(24,23));
seriesMay.getData().add(新的XYChart.Data(27,26));
seriesMay.getData().add(新的XYChart.Data(31,26));
ac.getData().addAll(seriesApril,seriesMay);
Label topLabel=新标签(“ATCGTCTGCTGACTGCATGCTGATGACTGACTGACTGACTGACTGACTGACTGACTGCTACTGACTGCATGCTGTGCTGACTGACTGACTGAATCGTGCTA”);
窗格=新窗格(topLabel);
StackPane StackPane=新的StackPane(ac,窗格);
场景=新场景(stackPane,800600);
舞台场景;
stage.show();
topLabel.setLayoutX(yAxis.getLayoutBounds().getMaxX()+topLabel.getHeight());
topLabel.setLayoutY(xAxis.getLayoutBounds().getMaxY()+topLabel.getHeight());
}
公共静态void main(字符串[]args)
{
发射(args);
}
}

导入javafx.application.application;
导入javafx.scene.scene;
导入javafx.scene.chart.AreaChart;
导入javafx.scene.chart.NumberAxis;
导入javafx.scene.chart.XYChart;
导入javafx.scene.control.Label;
导入javafx.scene.layout.Pane;
导入javafx.scene.layout.StackPane;
导入javafx.stage.stage;
公共类AreaChartSample扩展应用程序
{
@凌驾
公众假期开始(阶段)
{
阶段。设置标题(“面积图样本”);
最终数字xis xAxis=新数字xis(1,31,1);
最终数字axis yAxis=新数字axis();
最终面积图ac
=新面积图(X轴、Y轴);
ac.setTitle(“温度监测(摄氏度)”);
XYChart.seriesApril=新的XYChart.Series();
序列四月集名(“四月”);
seriesApril.getData().add(新的XYChart.Data(1,4));
seriesApril.getData().add(新的XYChart.Data(3,10));
seriesApril.getData().add(新的XYChart.Data(6,15));
seriesApril.getData().add(新的XYChart.Data(9,8));
seriesApril.getData().add(新的XYChart.Data(12,5));
seriesApril.getData().add(新的XYChart.Data(15,18));
seriesApril.getData().add(新的XYChart.Data(18,15));
seriesApril.getData().add(新的XYChart.Data(21,13));
seriesApril.getData().add(新的XYChart.Data(24,19));
seriesApril.getData().add(新的XYChart.Data(27,21));
seriesApril.getData().add(新的XYChart.Data(30,21));
XYChart.Series序列可以=新的XYChart.Series();
seriesMay.setName(“五月”);
seriesMay.getData().add(新的XYChart.Data(1,20));
seriesMay.getData().add(新的XYChart.Data(3,15));
seriesMay.getData().add(新的XYChart.Data(6,13));
seriesMay.getData().add(新的XYChart.Data(9,12));
seriesMay.getData().add(新的XYChart.Data(12,14));
seriesMay.getData().add(新的XYChart.Data(15,18));
seriesMay.getData().add(新的XYChart.Data(18,25));
seriesMay.getData().add(新的XYChart.Data(21,25));
seriesMay.getData().add(新的XYChart.Data(24,23));
seriesMay.getData().add(新的XYChart.Data(27,26));
seriesMay.getData().add(新的XYChart.Data(31,26));
ac.getData()。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.AreaChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.control.Label;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class AreaChartSample extends Application
{

    @Override
    public void start(Stage stage)
    {
        stage.setTitle("Area Chart Sample");
        final NumberAxis xAxis = new NumberAxis(1, 31, 1);
        final NumberAxis yAxis = new NumberAxis();
        final AreaChart<Number, Number> ac
                = new AreaChart<Number, Number>(xAxis, yAxis);
        ac.setTitle("Temperature Monitoring (in Degrees C)");
        XYChart.Series seriesApril = new XYChart.Series();
        seriesApril.setName("April");
        seriesApril.getData().add(new XYChart.Data(1, 4));
        seriesApril.getData().add(new XYChart.Data(3, 10));
        seriesApril.getData().add(new XYChart.Data(6, 15));
        seriesApril.getData().add(new XYChart.Data(9, 8));
        seriesApril.getData().add(new XYChart.Data(12, 5));
        seriesApril.getData().add(new XYChart.Data(15, 18));
        seriesApril.getData().add(new XYChart.Data(18, 15));
        seriesApril.getData().add(new XYChart.Data(21, 13));
        seriesApril.getData().add(new XYChart.Data(24, 19));
        seriesApril.getData().add(new XYChart.Data(27, 21));
        seriesApril.getData().add(new XYChart.Data(30, 21));

        XYChart.Series seriesMay = new XYChart.Series();
        seriesMay.setName("May");
        seriesMay.getData().add(new XYChart.Data(1, 20));
        seriesMay.getData().add(new XYChart.Data(3, 15));
        seriesMay.getData().add(new XYChart.Data(6, 13));
        seriesMay.getData().add(new XYChart.Data(9, 12));
        seriesMay.getData().add(new XYChart.Data(12, 14));
        seriesMay.getData().add(new XYChart.Data(15, 18));
        seriesMay.getData().add(new XYChart.Data(18, 25));
        seriesMay.getData().add(new XYChart.Data(21, 25));
        seriesMay.getData().add(new XYChart.Data(24, 23));
        seriesMay.getData().add(new XYChart.Data(27, 26));
        seriesMay.getData().add(new XYChart.Data(31, 26));

        ac.getData().addAll(seriesApril, seriesMay);

        Label topLabel = new Label("ATCGTCTGCTACTGACTGCATGCTGACTGACTGACTGAATCGTCTGCTACTGACTGCATGCTGACTGACTGACTGAATCGTCGTGCTA");
        Pane pane = new Pane(topLabel);

        StackPane stackPane = new StackPane(ac, pane);

        Scene scene = new Scene(stackPane, 800, 600);

        stage.setScene(scene);
        stage.show();

        topLabel.setLayoutX(yAxis.getLayoutBounds().getMaxX() + topLabel.getHeight());
        topLabel.setLayoutY(xAxis.getLayoutBounds().getMaxY() + topLabel.getHeight());

    }

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