java.lang.NullPointerException at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:1129)

Peter Penzov peter.penzov at gmail.com
Tue Jul 23 09:00:11 PDT 2013


Well, the only solution that I can think of is to place the images and the
css file into one folder.


On Tue, Jul 23, 2013 at 3:51 PM, Pavel Safrata <pavel.safrata at oracle.com>wrote:

> Forwarding to the list..
> Pavel
>
>
> -------- Original Message --------
> Subject:        Re: java.lang.NullPointerException at
> com.sun.javafx.sg.prism.**NGRegion.renderContent(**NGRegion.java:1129)
> Date:   Tue, 23 Jul 2013 15:48:20 +0300
> From:   Peter Penzov <peter.penzov at gmail.com>
> To:     Pavel Safrata <pavel.safrata at oracle.com>
>
>
>
> With the help of Pavel Safrata I found the problem. I have this css file
> which sets the style and the images of the toggle buttons:
>
> #pill-left {
>     -fx-padding: 5;
>     -fx-border-image-source: url("/com/dx57dc/images/left-**btn.png");
>     -fx-border-image-slice: 4 4 4 4 fill;
>     -fx-border-image-width: 4 4 4 4;
>     -fx-border-image-insets: 0;
>     -fx-border-image-repeat: stretch;
>     -fx-background-color: null !important;
> }
> #pill-left:selected { -fx-border-image-source:
> url("/com/dx57dc/images/left-**btn-selected.png"); }
> #pill-left .label {
>     -fx-text-fill: #d3d3d3;
>     -fx-effect: dropshadow( one-pass-box , rgba(0,0,0,0.75) , 0, 0.0 , 0 ,
> -1 );
> }
>
> #pill-left:selected .label {
>     /* -fx-text-fill: black; */
>     -fx-text-fill: white;
>     -fx-effect: dropshadow( one-pass-box , white , 0, 0.0 , 0 , 1 );
> }
> #pill-center {
>     -fx-padding: 5;
>     -fx-border-image-source: url("/com/dx57dc/images/**center-btn.png");
>     -fx-border-image-slice: 4 4 4 4 fill;
>     -fx-border-image-width: 4 4 4 4;
>     -fx-border-image-insets: 0;
>     -fx-border-image-repeat: stretch;
>     -fx-background-color: null !important;
> }
> #pill-center:selected { -fx-border-image-source: url("/com/dx57dc/images/*
> *center-btn-selected.png"); }
> #pill-center .label {
>     -fx-text-fill: #d3d3d3;
>     -fx-effect: dropshadow( one-pass-box , rgba(0,0,0,0.75) , 0, 0.0 , 0 ,
> -1 );
> }
> #pill-center:selected .label {
>     -fx-text-fill: black;
>     -fx-effect: dropshadow( one-pass-box , white , 0, 0.0 , 0 , 1 );
> }
> #pill-right {
>     -fx-padding: 5;
>     -fx-border-image-source: url("/com/dx57dc/images/right-**btn.png");
>     -fx-border-image-slice: 4 4 4 4 fill;
>     -fx-border-image-width: 4 4 4 4;
>     -fx-border-image-insets: 0;
>     -fx-border-image-repeat: stretch;
>     -fx-background-color: null !important;
> }
> #pill-right:selected { -fx-border-image-source:
> url("/com/dx57dc/images/right-**btn-selected.png"); }
> #pill-right .label {
>     -fx-text-fill: #d3d3d3;
>     -fx-effect: dropshadow( one-pass-box , rgba(0,0,0,0.75) , 0, 0.0 , 0 ,
> -1 );
> }
> #pill-right:selected .label {
>     -fx-text-fill: black;
>     -fx-effect: dropshadow( one-pass-box , white , 0, 0.0 , 0 , 1 );
> }
>
> The images are placed at the Java package: com.dx57dc.images
> What is the proper way to load images from css in Java 8?
>
>
> On Tue, Jul 23, 2013 at 1:51 PM, Pavel Safrata <pavel.safrata at oracle.com<mailto:
> pavel.safrata at oracle.**com <pavel.safrata at oracle.com>>> wrote:
>
>    Hi Peter,
>    it's enough to report on one place, let's discuss the issue in the
>    bug. I'll put there a comment soon.
>    Pavel
>
>
>    On 23.7.2013 12:37, Peter Penzov wrote:
>
>        Hi,
>            I'm working on JavaFX example which uses Toggle button:
>
>        private void initMainStage(final Stage mainStage)
>              {
>                  // Set Main Window Label
>
>                  // Set Icon of the main stage
>                  Image img = new
>        Image(getClass().getResource("**/com/dx57dc/images/internet-**
> icon.png").toExternalForm());
>
>                  mainStage.getIcons().add(img);
>
>                  // Main Stage
>                  root = new BorderPane();
>                  final VBox vbox = new VBox();
>                  // Set Style
>                  String pillButtonCss =
>        DX57DC.class.getResource("/**com/dx57dc/css/PillButton.css"**
> ).toExternalForm();
>
>
>                  // Create 3 toggle buttons and a toogle group for them
>                  ToggleButton tb1 = new ToggleButton("Infrastructure")**;
>                  tb1.setId("pill-left");
>                  ToggleButton tb2 = new ToggleButton("Agents");
>                  tb2.setId("pill-center");
>                  ToggleButton tb3 = new ToggleButton("Live Performance");
>                  tb3.setId("pill-right");
>
>                  final ToggleGroup group = new ToggleGroup();
>                  tb1.setToggleGroup(group);
>                  tb2.setToggleGroup(group);
>                  tb3.setToggleGroup(group);
>                  // Select the first button by default
>                  group.selectToggle(tb1);
>
>                  // Some test data
>                  final Rectangle rect2 = new Rectangle(300, 300);
>                  rect2.setFill(Color.SILVER);
>                  final Rectangle rect3 = new Rectangle(300, 300);
>                  rect3.setFill(Color.**DODGERBLUE);
>
>                  tb1.setUserData(root);
>                  tb2.setUserData(rect2);
>                  tb3.setUserData(rect3);
>                  final HBox hBox = new HBox();
>
>                  // Listener which changes toggle buttons content
>                  group.selectedToggleProperty()**.addListener(new
>        ChangeListener<Toggle>()
>                  {
>                      @Override
>                      public void changed(ObservableValue<? extends
>        Toggle> ov,
>        Toggle toggle, Toggle new_toggle)
>                      {
>                          if (new_toggle == null)
>                          {
>                          }
>                          else
>                          {
>                              vbox.getChildren().set(2, (Node)
>        group.getSelectedToggle().**getUserData());
>                          }
>                      }
>                  });
>
>                  hBox.getChildren().addAll(tb1, tb2, tb3);
>                  hBox.setPadding(new Insets(5, 5, 5, 5)); // Padding
>        between the
>        main menu and the content
>                  hBox.getStylesheets().add(**pillButtonCss); // Add the
>        css style
>
>                  // Content of the main stage
>                  leftHBox = getLeftHBox(mainStage, root);
>                  rightHBox = getRightHBox(mainStage);
>                  footerVBox = getFooter(mainStage);
>                  centerPane = getCenterPane(mainStage);
>
>                  // default resizer with drag insets(5,5,5,5);
>                  //RegionResizerFX.register(**leftHBox, rightHBox,
>        footerVBox,
>        centerPane);
>
>                  root.setRight(rightHBox);
>                  root.setBottom(footerVBox);
>                  root.setLeft(leftHBox);
>                  root.setCenter(centerPane);
>
>                  RegionResizerFX.register(**centerPane);
>
>                  // Vbox which holds main menu, toggle buttons and main
>        content
>                  vbox.getChildren().addAll(**getMenu(mainStage, root),
>        hBox, (Node)
>        group.getSelectedToggle().**getUserData());
>
>                  // Set main stage size and color
>                  Scene scene = new Scene(vbox, 1200, 650,
>        Color.WHITESMOKE); // Set
>        main Stage color
>
>                  // Application Close Confirmation Dialog
>                  dialog = new DialogPanels();
>                  dialog.initClosemainAppDialog(**mainStage);
>
>                  // Application Hot Keys Utilization
>                  hotkey = new HotKey();
>                  hotkey.initApplicationHotKeys(**mainStage, scene);
>
>                  mainStage.setScene(scene);
>
>                  Rectangle2D primaryScreenBounds =
>        Screen.getPrimary().**getVisualBounds();
>
>                  // Set Stage boundaries to visible bounds of the main
>        screen
>                  mainStage.setX(**primaryScreenBounds.getMinX())**;
>                  mainStage.setY(**primaryScreenBounds.getMinY())**;
>                  mainStage.setWidth(**primaryScreenBounds.getWidth()**);
> //
>        Maximum
>        width of the display
>                  mainStage.setHeight(**primaryScreenBounds.getHeight(**));
>        // Maximum
>        height of the display
>                  //mainStage.show();
>
>              }
>
>
>        I tried to run the code on JVM 8b99 but I get error which I
>        described here:
>
>        https://javafx-jira.kenai.com/**browse/RT-31859<https://javafx-jira.kenai.com/browse/RT-31859>
>
>        Is this JVM bug or I have a bug into my code?
>
>
>
>
>
>


More information about the openjfx-dev mailing list