JavaFX CSS ändern wirft NPE

White_Fox

Top Contributor
Guten Abend allerseits.

Ich spiele jetzt das erste Mal mit CSS-Dateien herum und möchte eine CSS-Datei am Anfang laden. Ich möchte überhaupt erstmal irgendeine CSS-Datei laden, allerdings kommt dabei stets eine NPE. Sieht jemand vielleicht, warum?

Die CSS-Datei liegt in einem Ordner ..\ApplicationDirectory\css\Dark.css, der Pfad stimmt auch. Die .jar liegt im ApplicationDirectory. Die CSS-Datei hab ich von hier (zweiter Post, der mit dem Bild):


Java:
public class MainApplication extends javafx.application.Application {

    private static View view;
    private static UserSettings settings;

    @Override
    public void start(Stage primaryStage) throws Exception {
        view.initGUI(primaryStage);
    }

    public void run(String[] args) {
        Model model;
        Controller controller;
        CommandFactory commandFactory;

        try {
            //Load usersettings
            loadUsersettings();

            //Load model and controller
            model = new Model();
            controller = new Controller();
            controller.setModel(model);

            commandFactory = CommandFactory.newFactory(model, controller);

            view = new View(model, controller, this);            //<--

            controller.setView(view);

            launch(args);
        }
        catch (Exception ex) {
            Logger.getLogger(Launcher.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public void stop() throws Exception {
        super.stop();
    }
    
    //...
}


public class View implements ModelObservable, ViewdataControllable, ViewsControllerLinkable {
    //...
    public View(ModelsViewLinkable model,
        ControllersViewLinkable controller,
        Application mainapplication) {

        this.controller = controller;
        this.model = model;
        this.mainapplication = mainapplication;
        this.commands = CommandFactory.newFactory();

        //Register as ModelObserver
        registerListenerToModel(this);
    }
    
    public void initGUI(Stage mainstage) throws IOException {
        //Load language
        File file = new File(Statics.lngPath());
        URL[] urls = {file.toURI().toURL()};
        ClassLoader loader = new URLClassLoader(urls);
        textResourceBundle = ResourceBundle.getBundle("text", Locale.getDefault(), loader);

        this.mainStage = mainstage;

        //Generate main window
        mainPane = new BorderPane();
        Scene mainScene = new Scene(mainPane, 1000, 600);
        mainScene.getStylesheets().add(mainapplication.getClass().getResource(Statics.cssPath() + "Dark.css").toExternalForm()); //<-- NPE hier

        getInitData();

        //...

Gruß
WF
 

mrBrown

Super-Moderator
Mitarbeiter
Vermutlich gibt getResource null zurück?

Wenn die css-Datei als Datei im Filesysten liegt, ist getResource das falsche, damit lädt man Resourcen innerhalb des Jars. Einfach den absoluten Pfad zur Datei übergeben müsste klappen.
 

White_Fox

Top Contributor
Ah danke...ja, jetzt geht es wieder, allerdings lädt er die CSS-Datei immer noch nicht.

In der Ausgabe bekomme ich jetzt die Warnung "Dez 18, 2020 12:01:54 AM com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged" gefolgt von der Meldung, daß die Ressource nicht gefunden wurde - obwohl es sie aber gibt. Das Projekt und die Datei befinden sich irgendwo im persönlichen Ordner, also Adminrechte oder so sollten da nicht erforderlich sein...oder?
 

mrBrown

Super-Moderator
Mitarbeiter
Dann vielleicht doch erst File oder Path draus machen, dann ne URL, und daraus dann mit toExternalForm den String. Kanns grad nicht ausprobieren, aber gut möglich, dass aktuell sonst versucht wird, das als Resource zu laden
 

White_Fox

Top Contributor
Danke...so funktioniert es (bzw. es kommt ein anderer Fehler).

Mal eine Frage: Was genau macht die URL-Klasse eigentlicht genau?


Wie gesagt kommt jetzt ein anderer Fehler, jetzt lädt er die Datei, allerdings kommt der CSS-Parser aber mit einem anderen Fehler um die Ecke: "Expected LBRACE at [2,0]".
Anscheinend vermisst er eine linke Akkolade '{' irgendwo, aber wo? Was soll mir [2,0] sagen? Die Datei sieht so aus:

CSS:
/*/////////////////////////////////////////////////////////////////////////////
//                     Dark theme was dropped from here:                     //
// https://stackoverflow.com/questions/49159286/make-a-dark-mode-with-javafx //
//                            Thanks for sharing.                            //
/////////////////////////////////////////////////////////////////////////////*/

.root {
    -fx-accent: #1e74c6;
    -fx-focus-color: -fx-accent;
    -fx-base: #373e43;
    -fx-control-inner-background: derive(-fx-base, 35%);
    -fx-control-inner-background-alt: -fx-control-inner-background ;
}

.label{
    -fx-text-fill: lightgray;
}

.text-field {
    -fx-prompt-text-fill: gray;
}

.titulo{
    -fx-font-weight: bold;
    -fx-font-size: 18px;
}

.button{
    -fx-focus-traversable: false;
}

.button:hover{
    -fx-text-fill: white;
}

.separator *.line {
    -fx-background-color: #3C3C3C;
    -fx-border-style: solid;
    -fx-border-width: 1px;
}

.scroll-bar{
    -fx-background-color: derive(-fx-base,45%)
}

.button:default {
    -fx-base: -fx-accent ;
}

.table-view{
    /*-fx-background-color: derive(-fx-base, 10%);*/
    -fx-selection-bar-non-focused: derive(-fx-base, 50%);
}

.table-view .column-header .label{
    -fx-alignment: CENTER_LEFT;
    -fx-font-weight: none;
}

.list-cell:even,
.list-cell:odd,
.table-row-cell:even,
.table-row-cell:odd{   
    -fx-control-inner-background: derive(-fx-base, 15%);
}

.list-cell:empty,
.table-row-cell:empty {
    -fx-background-color: transparent;
}

.list-cell,
.table-row-cell{
    -fx-border-color: transparent;
    -fx-table-cell-border-color:transparent;
}
 

White_Fox

Top Contributor
Also: Ich habe erst den Kommentar entfernt, und dann auch mal die Reihenfolge der Einträge geändert. Und vor jedem Testlauf hab ich das Projekt bereinigt und neu gebaut.

Jedoch bleibt die Fehlermeldung, und sie ändert sich auch nicht. Es wird stets [2, 0] angemäkelt. Kann der Fehler noch irgendwie außerhalb der CSS-Datei liegen?
 

White_Fox

Top Contributor
Keine Exception, nur eine Warnung:
Dez 18, 2020 7:44:45 PM com.sun.javafx.css.parser.CSSParser parse
WARNING: CSS Error parsing file:/C:/Pfad/zum/Projekt/jComponent%20Library%20Sorcerer/css/: Expected LBRACE at [2,0]

Edit: Komisch, jetzt geht es...hab vorhin zwischendurch mal meinen Rechner neu gestartet und nun läuft es anständig.

Danke für deine Hilfe, @mrBrown . :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
H AWT Dialog Größe ändern - Schwarzer Inhalt beim groß ziehen AWT, Swing, JavaFX & SWT 1
_user_q ChoiceBox Elemente: Sprache ändern AWT, Swing, JavaFX & SWT 7
raeuchertofu Text von JTextfield und JLabel ändern AWT, Swing, JavaFX & SWT 2
B Deckraft ändern AWT, Swing, JavaFX & SWT 1
Davee JavaFX ListView = null wenn ich sie in Laufzeit ändern will! AWT, Swing, JavaFX & SWT 16
missy72 JavaFX RowFactory Schriftfarbe ändern AWT, Swing, JavaFX & SWT 6
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
Hatsi09 GUI Input Farbe ändern AWT, Swing, JavaFX & SWT 0
E Keystroke für Ausschneiden läßt sich nicht ändern AWT, Swing, JavaFX & SWT 2
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
sascha-sphw JavaFX ListCell höhe verändert sich beim ändern der Text-Farbe AWT, Swing, JavaFX & SWT 14
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
R Swing JTextField - Schriftgröße je nach Länge und Größe ändern AWT, Swing, JavaFX & SWT 0
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
S Swing JLabel Text mit der Zeit ändern AWT, Swing, JavaFX & SWT 1
S JavaFX ListView Inhalte während Laufzeit ändern AWT, Swing, JavaFX & SWT 23
Shallty JavaFX MenuItem (Info) Icon ändern AWT, Swing, JavaFX & SWT 7
J Schriftart über einen Button ändern AWT, Swing, JavaFX & SWT 1
J JButton zum ändern Der Schriftart/Schriftgröße AWT, Swing, JavaFX & SWT 2
C Bilder so einbinden, dass sie sich ändern AWT, Swing, JavaFX & SWT 6
S JavaFX Boolean ändern Table View AWT, Swing, JavaFX & SWT 14
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
L JavaFX TableView kein content text ändern AWT, Swing, JavaFX & SWT 2
I Java Bildfarbe ändern wie bei Photoshop AWT, Swing, JavaFX & SWT 9
cool_brivk24 Swing Button Farbe ändern AWT, Swing, JavaFX & SWT 2
B Observer Pattern JLabel ändern AWT, Swing, JavaFX & SWT 7
K JavaFX TextInputDialog Button Text ändern AWT, Swing, JavaFX & SWT 1
Tronert JavaFX Linienstärke eines Separators ändern? AWT, Swing, JavaFX & SWT 3
das_leon AWT Button Design ändern AWT, Swing, JavaFX & SWT 5
S JavaFX GridPane Zellen Seitenverhätnis passend ändern mit der Stage AWT, Swing, JavaFX & SWT 0
S Parameter ändern in try/catch AWT, Swing, JavaFX & SWT 5
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
G JavaFX TableView Wert in Spalte ändern AWT, Swing, JavaFX & SWT 0
C JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern? AWT, Swing, JavaFX & SWT 13
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
L JavaFX button über andere Klasse ändern AWT, Swing, JavaFX & SWT 7
T JavaFX Text des ProgressIndicators ändern AWT, Swing, JavaFX & SWT 2
T JavaFx Examples ändern liefert unerwartetes Ergebnis AWT, Swing, JavaFX & SWT 5
Z Swing JTree DefaultMultipleTreeNode Repräsentation ändern AWT, Swing, JavaFX & SWT 1
MaxG. Swing Farbe von Button beim drücken ändern AWT, Swing, JavaFX & SWT 4
MaxG. JFrame Größe ändern AWT, Swing, JavaFX & SWT 16
K Liniendicke für Line Chart dynamisch ändern AWT, Swing, JavaFX & SWT 0
K Sprache ändern AWT, Swing, JavaFX & SWT 11
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
S JavaFX fxml datein mit menübar ändern AWT, Swing, JavaFX & SWT 20
W Kodierung (CharSet) beim Schreiben ändern AWT, Swing, JavaFX & SWT 1
Neumi5694 LookAndFeel Look & Feel nicht angezeigter Komponenten ändern AWT, Swing, JavaFX & SWT 6
T AWT Farben in einem Bild ändern AWT, Swing, JavaFX & SWT 8
N JLabel ändern während Programm ausgeführt wird AWT, Swing, JavaFX & SWT 4
krgewb Swing JTree - Farbe von nodes ändern AWT, Swing, JavaFX & SWT 4
D Swing JScrollPane Tabelle ändern (2 Tabellen) AWT, Swing, JavaFX & SWT 7
Sugan Inhalte mit Threads ändern -> java.lang.IllegalStateException AWT, Swing, JavaFX & SWT 6
X JMenu Menu-Bar ausrichtung ändern im Programm AWT, Swing, JavaFX & SWT 0
D JavaFX Probleme bei Service-Klasse beim ändern der GUI AWT, Swing, JavaFX & SWT 8
P im JTable die Schriftfarbe ändern AWT, Swing, JavaFX & SWT 19
F GUI Auflösung ändern - Koordianten und Proportions Problem AWT, Swing, JavaFX & SWT 21
R Hilfe beim ändern des Hintergrundes eines JFrames AWT, Swing, JavaFX & SWT 9
R LookAndFeel Wie kann man die Textfarbe der Nimbus ProgressBar nach Füllstand ändern? AWT, Swing, JavaFX & SWT 2
J JavaFX Bestimmte Zellen im TableView ändern (Farbe und Text) AWT, Swing, JavaFX & SWT 1
J JTable bounds ändern durch resizing des Fensters AWT, Swing, JavaFX & SWT 9
F JTable Zellen-Hintergrund ändern AWT, Swing, JavaFX & SWT 7
B Jlabel Text von anderen Klasse aus ändern AWT, Swing, JavaFX & SWT 9
P Fenstergröße ändern, Panel soll gleich bleiben AWT, Swing, JavaFX & SWT 2
S JavaFX NullPointerException bei Versuch ImageView zu ändern AWT, Swing, JavaFX & SWT 1
F JavaFX Timeline Animation soll X- und Y-Position während Animation ändern AWT, Swing, JavaFX & SWT 2
E JLabel aus Runnable ändern AWT, Swing, JavaFX & SWT 2
Tom299 JavaFX TreeView Expanded-Icon ändern AWT, Swing, JavaFX & SWT 0
M JavaFX Progressbar bar und track Komponente zur Laufzeit ändern AWT, Swing, JavaFX & SWT 2
B 3D-Grafik Java 3D Licht während Laufzeit ändern AWT, Swing, JavaFX & SWT 0
T JavaFX "DefaultButton"-Design ändern AWT, Swing, JavaFX & SWT 8
D Event Handling Aus einer anderen Klasse heraus einen Text des JLabels ändern. AWT, Swing, JavaFX & SWT 12
Z Möglichkeit mit Listerners die Farbe meiner Objekte zu ändern AWT, Swing, JavaFX & SWT 15
K (GUI) JButton Farbe bei druck ändern AWT, Swing, JavaFX & SWT 3
E JTable Hintergrund von geklickter Zelle ändern AWT, Swing, JavaFX & SWT 2
T JFileChooser Rahmenfarbe ändern AWT, Swing, JavaFX & SWT 1
Z JavaFX Inhalt einer ViewTable durch Aktion einer Menubar ändern welche in einer anderen fxml ist AWT, Swing, JavaFX & SWT 4
Joew0815 Dropdown meue während der Laufzeit ändern. AWT, Swing, JavaFX & SWT 6
T MausClick soll TExt ändern AWT, Swing, JavaFX & SWT 6
Tom299 JavaFX Titelfarbe ändern AWT, Swing, JavaFX & SWT 7
S Größe der Komponenten, beim ändern der größe des Frames, mit ändern! AWT, Swing, JavaFX & SWT 2
H Image im Array per Knopfdruck ändern AWT, Swing, JavaFX & SWT 6
S Farbe ändern bei der paint-Methode AWT, Swing, JavaFX & SWT 5
J in actionPerformed() Koordinaten ändern AWT, Swing, JavaFX & SWT 9
W JavaFX Label in Controller-Klasse in einer anderen Controller-Klasse ändern AWT, Swing, JavaFX & SWT 9
OnDemand Inhalt des Frames ändern AWT, Swing, JavaFX & SWT 4
D Swing JCombobox - Tooltip Location ändern AWT, Swing, JavaFX & SWT 4
I Swing Beim Fenster das kleine Symbol(ICS) ändern AWT, Swing, JavaFX & SWT 3
O Hintergrund von AffineTransfom (rotation) ändern AWT, Swing, JavaFX & SWT 0
G jLabel aus anderem Fenster ändern AWT, Swing, JavaFX & SWT 7
G JavaFX Pane ändern/"austauschen" AWT, Swing, JavaFX & SWT 2
S Swing JColorChooser Font ändern AWT, Swing, JavaFX & SWT 2
H LookAndFeel Lokal nimbusOrange ändern AWT, Swing, JavaFX & SWT 2
U Größe eines Button im Menü ändern AWT, Swing, JavaFX & SWT 1
R JavaFX Label ändern in aufgerufener AnchorPane AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout zur Laufzeit ändern AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen


Oben