Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javafx2.x:如何绘制次要网格线_Java_Grid_Javafx 2_Linechart - Fatal编程技术网

javafx2.x:如何绘制次要网格线

javafx2.x:如何绘制次要网格线,java,grid,javafx-2,linechart,Java,Grid,Javafx 2,Linechart,我无法绘制次要网格线,是否可以在JavaFX2.2中这样做?在我的例子中,网格和图形会移动,因此我无法使用静态图像生成次要网格(如本例所示的活动图形) 现在我看到了 我正在寻找的一个例子。 根据@colti和一点模块逻辑的建议,我提出了这个解决方案 import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.chart.LineChart; import javafx.scene.c

我无法绘制次要网格线,是否可以在JavaFX2.2中这样做?在我的例子中,网格和图形会移动,因此我无法使用静态图像生成次要网格(如本例所示的活动图形)

现在我看到了

我正在寻找的一个例子。

根据@colti和一点模块逻辑的建议,我提出了这个解决方案

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.stage.Stage;

public class Axis extends Application
{

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

    @Override
    public void start(final Stage stage) throws Exception
    {
        final NumberAxis x = new NumberAxis();
        final NumberAxis y = new NumberAxis();
        x.setAutoRanging(false);
        y.setAutoRanging(false);

        final LineChart<Number, Number> lineChart = new LineChart<Number, Number>(x, y);
        lineChart.setPrefSize(900, 900);
        lineChart.setLegendVisible(false);
        lineChart.setCreateSymbols(false);
        lineChart.setAlternativeColumnFillVisible(false);
        lineChart.setAlternativeRowFillVisible(false);

        final XYChart.Series seriesX = new XYChart.Series();

        for (int i = 1; i < 100; i++) {
            if ((i % 2) != 0) {
                seriesX.getData().add(new XYChart.Data(i, 0));
                seriesX.getData().add(new XYChart.Data(i, 100));
            }
            else {
                seriesX.getData().add(new XYChart.Data(i, 100));
                seriesX.getData().add(new XYChart.Data(i, 0));
            }

        }

        final XYChart.Series seriesY = new XYChart.Series();

        for (int i = 1; i < 100; i++) {
            if ((i % 2) != 0) {
                seriesY.getData().add(new XYChart.Data(0, i));
                seriesY.getData().add(new XYChart.Data(100, i));
            }
            else {
                seriesY.getData().add(new XYChart.Data(100, i));
                seriesY.getData().add(new XYChart.Data(0, i));
            }

        }

        lineChart.getData().add(seriesX);
        lineChart.getData().add(seriesY);
        lineChart.getStylesheets().add("site.css");
        final Scene scene = new Scene(lineChart);
        stage.setScene(scene);
        stage.show();
    }
}

您是否尝试过添加两个绘图点,例如(22,0)和(22,100)?@colti I能够根据您的建议生成次要网格线。这种方法有一个小流程。看看代码,网格图将继续连接{(1,0)和(1100)将继续并连接(2.0)}。是否有一个内置的API,我可以使用它来代替端点之间的打印?如果您为每一组打印点实例化一个新的Series对象,它们将不会继续。我认为这就是API的意图。我的问题仍然是JavaFx是否支持在没有用户绘图点的情况下绘制次要网格线?据我所知,不支持。线段由两个不同的端点定义。您可以创建一些方法,例如drawVerticalLine,它本身进行点打印,并将X坐标作为参数。您应该避免通过从
折线图
对象获取X/y轴的最大值100来硬编码。这只是一个POC,我在实际项目中没有硬编码。
.chart-series-line{    
-fx-stroke-width: 1px;
-fx-stroke:#eedede;
-fx-effect: null;
}
.chart-vertical-grid-lines {
    -fx-stroke: #cccccc;
}
.chart-horizontal-grid-lines {
    -fx-stroke: #cccccc;
}