Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8094630

[BarChart] start and end margin affect in a strange way.

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: P5 P5
    • None
    • 7u6
    • javafx
    • 2.2.0b15

      Look at the attached movie and use an attached application.

      Code:


      import java.util.Random;
      import javafx.application.Application;
      import javafx.collections.FXCollections;
      import javafx.collections.ObservableList;
      import javafx.scene.Scene;
      import javafx.scene.chart.BarChart;
      import javafx.scene.chart.CategoryAxis;
      import javafx.scene.chart.NumberAxis;
      import javafx.scene.chart.XYChart;
      import javafx.scene.control.Label;
      import javafx.scene.control.Slider;
      import javafx.scene.layout.Pane;
      import javafx.scene.layout.VBox;
      import javafx.stage.Stage;

      public class JavaCharts extends Application {

          public static void main(String[] args) {
              launch(args);
          }
          NumberAxis axisY = new NumberAxis(0, 100, 10);
          ObservableList<String> existingCategories = FXCollections.observableArrayList();
          CategoryAxis axisX = new CategoryAxis(existingCategories);
          BarChart testedBarChart = new BarChart(axisY, axisX);
          VBox vb = new VBox();

          @Override
          public void start(Stage stage) throws Exception {
              testedBarChart.setTitle("BarChart");
              testedBarChart.setStyle("-fx-border-color: darkgray;");
              existingCategories.addAll("category1", "category2", "category3");

              addData();

              Pane pane = new Pane();
              pane.setPrefSize(600, 600);

              pane.setPrefSize(600, 600);
              pane.getChildren().add(testedBarChart);

              Slider slider1 = new Slider(-400, 400, 0);
              slider1.setShowTickLabels(true);
              slider1.setShowTickMarks(true);
              slider1.valueProperty().bindBidirectional(axisX.endMarginProperty());

              Slider slider2 = new Slider(-400, 400, 0);
              slider2.setShowTickLabels(true);
              slider2.setShowTickMarks(true);
              slider2.valueProperty().bindBidirectional(axisX.startMarginProperty());

              vb.getChildren().addAll(pane, new Label("End margin:"), slider1, new Label("Start margin:"), slider2);

              Scene scene = new Scene(vb, 700, 700);
              stage.setScene(scene);
              stage.show();
          }

          public void addData() {

              String serieName = "Serie";
              double min = 0;
              double max = 100;
              int amount = 3;

              ObservableList list = FXCollections.observableArrayList();

              XYChart.Series serie = new XYChart.Series(serieName, list);

              for (int i = 0; i < amount; i++) {
                  XYChart.Data newData = new XYChart.Data();
                  String category = existingCategories.get(i);
                  Double value = new Random().nextDouble() * (max - min) + min;
                  newData.setYValue(category);
                  newData.setXValue(value);
                  list.add(newData);
                  System.out.println(newData + " to category " + category + " value " + value);
              }

              testedBarChart.getData().add(serie);
          }
      }


      Having one slider in a fixed state, move the other slider leftward and right ward, to find a value, where mentioned effect happens.

            msladecek Martin Sládeček
            akirov Alexander Kirov (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported: