2016-12-08 4 views
0

Ich bin neu in javafx und ich versuche, meine Klasse meiner CSS-Datei zu verbinden aber wenn ich benutze:Warum erhalte ich InvocationTargetException, wenn ich versuche, css mit javafx zu verwenden?

scene.getStylesheets().add("Viper.css"); 

erhalte ich die folgende Warnung:

Dec 08, 2016 9:12:54 PM com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged 
WARNING: Resource "Viper.css" not found. 

Aber wenn ich benutze:

scene.getStylesheets().add(getClass().getResource("/resources/CSS/Viper.css").toExternalForm()); 

ich erhalte eine InvocationTargetException

Hier meine ganze cl ass und ich bin mir sicher, dass der Dateipfad korrekt ist. Ich benutze NetBeans IDE.

package com.GUI; 

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.geometry.Insets; 
import javafx.geometry.Pos; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.GridPane; 
import javafx.scene.layout.Pane; 
import javafx.scene.text.Font; 
import javafx.scene.text.FontWeight; 
import javafx.scene.text.Text; 
import javafx.stage.Stage; 


public class window extends Application{ 


    @Override 
    public void start(Stage primaryStage) { 

     primaryStage.setTitle("OmegaBrain"); 

     //Create Panes 
     Pane titlePane = new Pane(); 


     GridPane grid = new GridPane(); 
     grid.setAlignment(Pos.CENTER); 
     grid.setHgap(10); 
     grid.setVgap(10); 
     grid.setPadding(new Insets(25, 25, 25, 25)); 

     Text sceneTitle = new Text("Welcome To OmegaBrain"); 
     sceneTitle.setFont(Font.font("Helvetica", FontWeight.NORMAL, 20)); 
     grid.add(sceneTitle, 0, 0, 4, 1); 



     Scene scene = new Scene(grid, 300, 275); 
     scene.getStylesheets().add("/resources/CSS/Viper.css"); 


     primaryStage.setScene(scene); 
     primaryStage.show(); 


     Button play = new Button("Play"); 
     grid.add(play, 1, 1); 

     Button leaderboard = new Button("Leaderboard"); 
     grid.add(leaderboard, 2, 1); 

     Button faq = new Button("FAQs"); 
     grid.add(faq, 3, 1); 

     Button exit = new Button("Exit"); 
     grid.add(exit, 4, 1); 


     play.setOnAction((ActionEvent e) -> { 
     System.out.println("The play button was clicked!"); 
     }); 



    } 


    public static void main(String[]args){ 
     launch(args); 
    } 



} 
+0

Wo ist dein 'Viper.css' Stylesheet? –

+0

@BoHalim Dies ist der Dateipfad: "C: \ Benutzer \ Marc \ Dokumente \ NetBeansProjects \ memoryGameJavaFX \ src \ resources \ CSS \ Viper.css" –

+0

Mögliche Duplikate von [Wie lade ich eine Datei aus dem Ressourcenordner?] (Http : //stackoverflow.com/questions/15749192/how-do-i-load-a-file-from-resource-folder) – Itai

Antwort

0

Unter der Annahme, dass Ihre Anwendung mit dieser Hierarchie aufgebaut ist:

Application ->src -->com/GUI/window.java -->resources/CSS/Viper.css

Dann sollte dieses Stück Code arbeiten:

scene.getStylesheets().add(getClass().getResource("/resources/CSS/Viper.css").toExternalForm()); 
// or 
scene.getStylesheets().add("/resources/CSS/Viper.css"); 
0

Sie können es lösen mit scene.getStylesheets().add("Package Name/Viper.css"));

Verwandte Themen