2016-07-24 3 views
1

Я экспериментировал с использованием css с javafx. Мой проект был очень простым с 2 сценами, двумя кнопками. кнопки переключаются между сценами. файл Java, содержащий основной класс приведен ниже:Ресурс не найден - netbeans javafx error

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» t, а цвет фона обеих сцен не изменяется. и во время выполнения программы, Netbeans говорит «ресурс„viper.css“не найден» Может кто-нибудь предложить мне, как преодолеть эту ошибку

+0

вы уверены, что ваш файл viper.css находится в том же пакете, что и этот class? Попробуйте поместить их в каталог src и повторите попытку. –

+1

Ну, спасибо ... это было так: StageAndScene/src/viper.css теперь я скопировал этот файл css в папку вверх. I mea n теперь это: StageAndScene/viper.css и поклониться! Еще раз спасибо ... –

ответ

0

Вы должны проверьте путь к файлу viper.css.Если вы обращаетесь к нему так, то вы должны иметь оба файла Main и CSS в той же папке.

0

Попробуйте что-то вроде этого:.?

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

Кажется, мне придется импортировать что-то для этого «getClass» ... какой файл мне нужно импортировать? –

+0

Метод 'add' ожидает' String', но 'getClass.getResource (" viper.css ")' возвращает 'URL'. Поэтому 'toExternalForm()' нужно вызывать. – fabian

+0

Да, я забыл добавить toExternalForm(), я добавлю его сейчас –

Смежные вопросы