2016-07-24 154 views
1

我正在用javafx试验css的使用。我的项目非常简单,有2个场景,2个按钮。按钮在场景之间切换。下面包含主类的Java文件中给出:资源未找到 - netbeans javafx错误

package stageandscene; 

import javafx.application.Application; 
import javafx.geometry.Pos; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.GridPane; 
import javafx.stage.Stage; 
import javafx.scene.control.Label; 

public class StageAndScene extends Application { 

Scene scene1, scene2; 
@Override 
public void start(Stage primaryStage) { 

    Button btn = new Button(); 
    Button btn2= new Button(); 

    btn.setText("Go to Scene 2"); 
    btn.setOnAction(e ->primaryStage.setScene(scene2)); 
    Label lebel= new Label("Hi there!! You are on scene 1"); 

    GridPane grid = new GridPane(); 
    grid.setHgap(20); 
    grid.setVgap(5); 
    grid.addRow(1, lebel,btn);  
    grid.setAlignment(Pos.CENTER); 
    scene1 = new Scene(grid, 300, 250); 
    scene1.getStylesheets().add("viper.css"); 

    Label lebel2= new Label("Hi there!! You are on scene 2"); 
    btn2.setText("Go to Scene 1"); 
    btn2.setOnAction(e ->primaryStage.setScene(scene1));    
    GridPane grid2 = new GridPane(); 
    grid2.setHgap(20); 
    grid2.setVgap(5); 
    grid2.addRow(1, lebel2,btn2);  
    grid2.setAlignment(Pos.CENTER); 
    scene2 = new Scene(grid2, 600, 550); 
    scene2.getStylesheets().add("viper.css"); 

    primaryStage.setTitle("Hello World!"); 
    primaryStage.setScene(scene1); 
    primaryStage.show(); 
} 
public static void main(String[] args) { 
    launch(args); 
} 


} 

“viper.css”上,看起来像这样同一个项目文件夹:

.root{ 
-fx-background-color: #ff3333; 
} 

这一计划运行良好,但css文件ISN”工作并且两个场景的背景颜色不变。并运行程序时,NetBeans的说:“资源‘viper.css’没有找到”任何人都可以建议我如何克服这种错误

+0

你确定你的文件viper.css与这个包是在同一个包中class?试着把它们都放到src目录下,然后再试一次 –

+1

好吧,谢谢...正是这样:StageAndScene/src/viper.css现在我已经把这个css文件复制到了文件夹中了。 ñ现在它是:StageAndScene/viper.css和弓它的作品!再次感谢... –

回答

0

你必须检查你的viper.css文件的路径如果你像这样访问它,那么你应该在同一个文件夹中同时存在主文件和CSS文件。

0

尝试是这样的:?

scene1.getStylesheets().add(getClass.getResource("viper.css").toExternalForm()); 
+0

看来我必须为'getClass'导入一些东西...我应该导入什么文件? –

+0

'add'方法期望'String',但'getClass.getResource(“viper.css”)'返回'URL'。因此需要调用toExternalForm()。 – fabian

+0

是的,我忘了添加到ExternalForm()我现在将它添加 –