【问题标题】:Is possible to create horizontal scrolling line chart with a locked y axis on JAVAFX?是否可以在 JAVAFX 上创建锁定 y 轴的水平滚动折线图?
【发布时间】:2018-11-30 10:01:29
【问题描述】:

我想在 JAVAFX 上创建带有锁定 y 轴的水平滚动 linechart。我一直在寻找一个例子或类似的东西,但我没有找到任何关于 JAVAFX 的东西。我尝试将linechart 放入scrollpane,但是当我滚动(当然)时,一切都在左右移动,我希望至少总是看到图例和 y 轴......

有什么想法吗?谢谢!

例如在 chart.js 上是这样的:

【问题讨论】:

  • 请分享代码!!
  • 我想问一下,你的图表会有什么样的Axis?对于 X 轴的 NumberAxis,您可以相应地调整下限和上限以产生滚动效果,不幸的是,CategoryAxis 无法做到这一点。

标签: java css javafx linechart scrollpane


【解决方案1】:

您好,我创建了一个新的应用程序,它可以满足您的需求。诀窍是,您将图表的 minHeight 设置为小于 ScrollPane 的大小,因为 ScrollPane 需要为 Scrollbar 提供空间。这是我的例子:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.control.ScrollPane;
import javafx.stage.Stage;


public class LineChartSample extends Application {

    @Override public void start(Stage stage) {
        stage.setTitle("Line Chart Sample");
        //defining the axes
        final NumberAxis xAxis = new NumberAxis();
        final NumberAxis yAxis = new NumberAxis();
        xAxis.setLabel("Number of Month");
        //creating the chart
        final LineChart<Number,Number> lineChart =
                new LineChart<>(xAxis, yAxis);

        lineChart.setTitle("Stock Monitoring, 2010");
        //defining a series
        XYChart.Series series = new XYChart.Series();
        series.setName("My portfolio");
        //populating the series with data
        series.getData().add(new XYChart.Data(1, 23));
        series.getData().add(new XYChart.Data(2, 14));
        series.getData().add(new XYChart.Data(3, 15));
        series.getData().add(new XYChart.Data(4, 24));
        series.getData().add(new XYChart.Data(5, 34));
        series.getData().add(new XYChart.Data(6, 36));
        series.getData().add(new XYChart.Data(7, 22));
        series.getData().add(new XYChart.Data(8, 45));
        series.getData().add(new XYChart.Data(9, 43));
        series.getData().add(new XYChart.Data(10, 17));
        series.getData().add(new XYChart.Data(11, 29));
        series.getData().add(new XYChart.Data(12, 25));

        ScrollPane root = new ScrollPane(lineChart);
        root.setMinSize(1000,600);
        lineChart.setMinSize(root.getMinWidth(),root.getMinHeight()-20);
        Scene scene  = new Scene(root,800,600);
        lineChart.getData().add(series);

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

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

【讨论】:

  • 您不能将折线图添加到可滚动窗格中
猜你喜欢
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多