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

HBox/VBox child widths pixel-snap to wrong value

    XMLWordPrintable

    Details

    • Subcomponent:
    • CPU:
      generic
    • OS:
      generic

      Description

      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 ----------

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                Created:
                Updated: