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

HBox/VBox child widths pixel-snap to wrong value

XMLWordPrintable

    • generic
    • generic

      A DESCRIPTION OF THE PROBLEM :
      The sum of pixel-snapped child widths of HBox/VBox don't always snap to the same value as the width or height of the container itself. This can lead to a visual glitch where the content of a HBox or VBox either doesn't fill the container, or extends slightly beyond its bounds.

      The sample program shows the problem for both cases.


      ---------- BEGIN SOURCE ----------
      Region r1 = new Region();
      Region r2 = new Region();
      Region r3 = new Region();
      Region r4 = new Region();
      Region r5 = new Region();
      Region r6 = new Region();
      r1.setBackground(new Background(new BackgroundFill(Color.GREY, null, null)));
      r2.setBackground(new Background(new BackgroundFill(Color.DARKGRAY, null, null)));
      r3.setBackground(new Background(new BackgroundFill(Color.BLACK, null, null)));
      r4.setBackground(new Background(new BackgroundFill(Color.GREY, null, null)));
      r5.setBackground(new Background(new BackgroundFill(Color.DARKGRAY, null, null)));
      r6.setBackground(new Background(new BackgroundFill(Color.BLACK, null, null)));
      r1.setPrefWidth(25.3);
      r2.setPrefWidth(25.3);
      r3.setPrefWidth(25.4);
      r4.setPrefWidth(25.3);
      r5.setPrefWidth(25.3);
      r6.setPrefWidth(25.4);
      r1.setMaxHeight(30);
      r2.setMaxHeight(30);
      r3.setMaxHeight(30);
      r4.setMaxHeight(30);
      r5.setMaxHeight(30);
      r6.setMaxHeight(30);
      HBox hbox1 = new HBox(r1, r2, r3, r4, r5, r6);
      hbox1.setBackground(new Background(new BackgroundFill(Color.RED, null, null)));
      hbox1.setPrefHeight(40);

      r1 = new Region();
      r2 = new Region();
      r3 = new Region();
      r4 = new Region();
      r5 = new Region();
      r6 = new Region();
      r1.setBackground(new Background(new BackgroundFill(Color.GREY, null, null)));
      r2.setBackground(new Background(new BackgroundFill(Color.DARKGRAY, null, null)));
      r3.setBackground(new Background(new BackgroundFill(Color.BLACK, null, null)));
      r4.setBackground(new Background(new BackgroundFill(Color.GREY, null, null)));
      r5.setBackground(new Background(new BackgroundFill(Color.DARKGRAY, null, null)));
      r6.setBackground(new Background(new BackgroundFill(Color.BLACK, null, null)));
      r1.setPrefWidth(25.3);
      r2.setPrefWidth(25.3);
      r3.setPrefWidth(25.4);
      r4.setPrefWidth(25.3);
      r5.setPrefWidth(25.3);
      r6.setPrefWidth(25.4);
      r1.setMaxHeight(30);
      r2.setMaxHeight(30);
      r3.setMaxHeight(30);
      r4.setMaxHeight(30);
      r5.setMaxHeight(30);
      r6.setMaxHeight(30);
      HBox hbox2 = new HBox(r1, r2, r3, r4, r5, r6);
      hbox2.setBackground(new Background(new BackgroundFill(Color.RED, null, null)));
      hbox2.setPrefHeight(40);
      hbox2.setPrefWidth(152);

      VBox root = new VBox(new HBox(hbox1), new HBox(hbox2));
      root.setSpacing(20);
      Scene scene = new Scene(root, 500, 250);

      primaryStage.setScene(scene);
      primaryStage.show();
      ---------- END SOURCE ----------

            mstrauss Michael Strauß
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: