java - 由于类别数据太长,使用 JavaFx 使用 Slider 创建引人注目的 BarChart 来查看

标签 java javafx javafx-8 javafx-2

我正在尝试使用 Javafx 制作条形图。然而它很小,很难看到。 enter image description here

我想让它变得更有吸引力

enter image description here

这是代码的程序

 public class Main extends Application {

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

  @Override
  public void start(Stage stage) throws Exception {
  stage.setTitle("JavaFX Chart Demo");
  StackPane pane = new StackPane();
  pane.getChildren().add(createBarChart());
  stage.setScene(new Scene(pane, 400, 200));
  stage.show();
 }

 public ObservableList<XYChart.Series<String, Double>>
     getDummyChartData() {
  ObservableList<XYChart.Series<String, Double>> data =
     FXCollections.observableArrayList();
  Series<String, Double> as = new Series<>();
  Series<String, Double> bs = new Series<>();
  Series<String, Double> cs = new Series<>();
  Series<String, Double> ds = new Series<>();
  Series<String, Double> es = new Series<>();
  Series<String, Double> fs = new Series<>();
  as.setName("A-Series");
  bs.setName("B-Series");
  cs.setName("C-Series");
  ds.setName("D-Series");
  es.setName("E-Series");
  fs.setName("F-Series");

  Random r = new Random();

  for (int i = 1900; i < 2017; i += 10) {

     as.getData().add(new XYChart.Data<>
     (Integer.toString(i), r.nextDouble()));
     bs.getData().add(new XYChart.Data<>
     (Integer.toString(i), r.nextDouble()));
     cs.getData().add(new XYChart.Data<>
     (Integer.toString(i), r.nextDouble()));
     ds.getData().add(new XYChart.Data<>
     (Integer.toString(i), r.nextDouble()));
     es.getData().add(new XYChart.Data<>
     (Integer.toString(i), r.nextDouble()));
     fs.getData().add(new XYChart.Data<>
     (Integer.toString(i), r.nextDouble()));
  }
  data.addAll(as, bs, cs, ds, es, fs);
  return data;
 }

 public XYChart<CategoryAxis, NumberAxis>
     createBarChart() {
  CategoryAxis xAxis = new CategoryAxis();
  NumberAxis yAxis = new NumberAxis();
  BarChart bc = new BarChart<>(xAxis, yAxis);
  bc.setData(getDummyChartData());
  bc.setTitle("Bar Chart on Random Number");
  return bc;
 }
 }

请帮助我如何通过Javafx获取它。我发现它可以通过 JFree Chart 解决,但是我不知道如何通过 BarChart javafX 来解决它。这对我来说真的是一个挑战。谢谢

最佳答案

只需在滚动 Pane 中制作图表即可。

public void start(Stage stage) throws Exception {
    stage.setTitle("JavaFX Chart Demo");
    StackPane stackPane = new StackPane();
    stackPane.setPrefSize(1000, 200);
    stackPane.getChildren().add(createBarChart());
    ScrollPane scrollPane = new ScrollPane();
    scrollPane.setPrefSize(400, 220);
    scrollPane.setContent(stackPane);
    stage.setScene(new Scene(scrollPane));
    stage.show();
}

关于java - 由于类别数据太长,使用 JavaFx 使用 Slider 创建引人注目的 BarChart 来查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58143110/

相关文章:

javafx-2 - 如何在 JavaFX 8 中从 css 文件加载图像

JavaFx 节点集.....() -> NullPointer 异常

java - 在 JavaFX 中的图像之间淡入淡出

java - Java Swing 中的标记输入

java - ndk中的原生调用错误

java - 我可以修复 JRadioButton 的宽度吗?

JavaFx:如果我想在 initialize() 之后,场景显示之前做一些事情,我该如何实现呢?

java - Try/Catch 或 IF 用于处理丢失的文件?

在调整窗口大小之前,javafx SwingNode 不工作

java - 我的自定义控件应该依赖于 Controller 类还是接口(interface)?