java.lang.NullPointerException at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:1129)
Richard Bair
richard.bair at oracle.com
Tue Jul 23 09:18:51 PDT 2013
David Grieve is your best resource, but he's on vacation.
On Jul 23, 2013, at 9:00 AM, Peter Penzov <peter.penzov at gmail.com> wrote:
> 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