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 <[email protected]>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 <[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: > pavel.safrata@oracle.**com <[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<https://javafx-jira.kenai.com/browse/RT-31859> > > Is this JVM bug or I have a bug into my code? > > > > > >
