【问题标题】:Why xAxis tickUnit didn't work in fxml file?为什么 xAxis tickUnit 在 fxml 文件中不起作用?
【发布时间】:2017-12-19 08:37:28
【问题描述】:

我想通过 fxml 文件创建一个散点图。我将下面的代码放在我的 fxml 文件中,但是当它完成渲染时,它并不像我预期的那样。有人知道发生了什么吗?

<BorderPane xmlns="http://javafx.com/javafx/8.0.121"
      xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.ChartController">
<left>
    <ScatterChart fx:id="memoryDistribution" prefWidth="360" title="Memory Distribution">
        <xAxis>
            <NumberAxis fx:id="xAxis" label="Memory Address/k" lowerBound="0" upperBound="7" tickUnit="1.00"/>
        </xAxis>
        <yAxis>
            <NumberAxis fx:id="yAxis" label="Memory Address/k" lowerBound="1" upperBound="257" tickUnit="8.00"/>
        </yAxis>
    </ScatterChart>
</left>

上面的代码是这样做的:

wrong expectation

但我的期望是这样的:

expectation 第二张图片代码:

    public class Main extends Application {

@Override
public void start(Stage primaryStage) throws Exception{

    primaryStage.setTitle("Scatter Chart Sample");
    final NumberAxis xAxis = new NumberAxis(0, 8, 1);
    final NumberAxis yAxis = new NumberAxis(1, 257, 8);
    final ScatterChart<Number,Number> sc = new
            ScatterChart<>(xAxis,yAxis);
    xAxis.setLabel("Memory Address/k");
    yAxis.setLabel("Memory Address/k");
    sc.setTitle("Memory Distribution");

    XYChart.Series series1 = new XYChart.Series();
    series1.setName("job-1");
    series1.getData().add(new XYChart.Data(0.5, 5));
    series1.getData().add(new XYChart.Data(1.5, 5));
    series1.getData().add(new XYChart.Data(2.5, 5));
    series1.getData().add(new XYChart.Data(3.5, 5));
    series1.getData().add(new XYChart.Data(4.5, 5));
    series1.getData().add(new XYChart.Data(5.5, 5));
    series1.getData().add(new XYChart.Data(6.5, 5));
    series1.getData().add(new XYChart.Data(7.5, 5));

    series1.getData().add(new XYChart.Data(0.5, 13));
    series1.getData().add(new XYChart.Data(1.5, 13));
    series1.getData().add(new XYChart.Data(2.5, 13));
    series1.getData().add(new XYChart.Data(3.5, 13));
    series1.getData().add(new XYChart.Data(4.5, 13));
    series1.getData().add(new XYChart.Data(5.5, 13));

    XYChart.Series series2 = new XYChart.Series();
    series2.setName("job-2");
    series2.getData().add(new XYChart.Data(0.5, 29));
    series2.getData().add(new XYChart.Data(1.5, 29));
    series2.getData().add(new XYChart.Data(2.5, 29));
    series2.getData().add(new XYChart.Data(3.5, 29));
    series2.getData().add(new XYChart.Data(4.5, 29));
    series2.getData().add(new XYChart.Data(5.5, 29));


    sc.getData().addAll(series1, series2);

    Scene chartScene = new Scene(sc,360,736);//best lookup

    primaryStage.setScene(chartScene);
    primaryStage.setMaximized(true);
    primaryStage.show();
}


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

}

【问题讨论】:

  • 您忘记在问题底部添加最后一段代码。

标签: javafx charts fxml scatter


【解决方案1】:

我已经完成了我的要求:网格打开,单元格大小为 256。

  1. 我在 fxml 中放置了任何类型的窗格,当 init 启动时它应该被渲染并在那里放置一个空白窗格。

    
        <center>
            <ScrollPane fx:id="chartPane" prefWidth="380" prefHeight="760">
            </ScrollPane>
        </center>
    
  2. 然后我编写代码来初始化一个散点图并把它放到上面的窗格中。

  3. 在类sample.ChartController中作为fxml配置,把init代码放到这个类中,命名一个方法initialize。

    
        private void initialize(){
                final NumberAxis xAxis = new NumberAxis(0,8,1);
                final NumberAxis yAxis = new NumberAxis(0,256,8);
                xAxis.setLabel("Memory Address/k");
                yAxis.setLabel("Memory Address/k");
                this.memoryDistributionChart = new ScatterChart(xAxis,yAxis);
                memoryDistributionChart.setTitle("Memory Distribution");
                memoryDistributionChart.setPrefHeight(736);
                memoryDistributionChart.setPrefWidth(360);
                chartPane.setContent(memoryDistributionChart);
        }
    

memoryDistributionChart 是一个 ScatterChart,一个成员属性。
chartPane 是另一个成员属性。

最后,the result like this

因为主舞台渲染时,要先调用控制器的初始化方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-28
    • 2015-08-22
    • 1970-01-01
    • 2012-07-12
    • 2021-01-06
    • 2017-04-24
    • 2017-01-19
    • 2021-08-21
    相关资源
    最近更新 更多