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 <[email protected]>
To:     Pavel Safrata <[email protected]>



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 <[email protected] <mailto:[email protected]>> 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

       Is this JVM bug or I have a bug into my code?





Reply via email to