JavaFX - Bild in Jar einbinden, sodass es auch außerhalb der IDE geladen wird.

Master1991

Mitglied
Hi,

ich habe grade mein erstes JavaFX Projekt erstellt und nutze FXML und den SceneBuilder um die Oberfläche für das spätere Programm zu erstellen.

Mein Problem ist nun das die jar Datei am ende standalone sein sollte, daher müssen die Bilder in die JarDatei eingebunden werden. Leider klappt dies nicht und ich finde leider nicht die Ursache dafür:

Java:
public class guiController implements Initializable {
    private static final URL ledOnPath = guiController.class.getResource("led_blue.gif");
    private static final URL ledOffPath = guiController.class.getResource("led_white.gif");
    private static final Image ledOff = new Image(ledOffPath.getPath());
    private static final Image ledOn = new Image(ledOnPath.getPath());
    
    @FXML
    private Label label;
    
    @FXML
    private ImageView led;
    
    @FXML
    private void handleButtonAction(ActionEvent event) throws FileNotFoundException {
        led.setImage(ledOn);   
    }
    
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    
    
}

Hoffe mir kann hier jemand auf die Sprünge helfen, zumal dies bei weitem nicht die letzte Frage sein wird😀 ... Aber irgendwo müssen wir alle anfangen
 
EDIT // Hat sich erledigt! Hab es selber herausgefunden. Netbeans packt die Bilder automatisch in die Jar und nutzt relative Pfade, dazu muss das Bild jedoch ausgehend vom src package angegeben werden. 🙂
 
Korrektur: Es werden relative Pfade abhängig von der Klasse, von der aus du die Ressource laden möchtest, verwendet.

Darüber hinaus: Klassennamen werden CamelCase geschrieben, beginnend mit einem grossen Buchstaben, während Methoden und normale Variablen camelCase - beginnend mit einem kleinen Buchstaben - geschrieben werden (ausser statische finale Vars, die immer Gross und mit Unterstrichen). Mich wundert, das NetBeans bei dem Klassennamen nichts sagt - Eclipse würde mich ständig anmeckern...
 

Zurück
Oben