Ressources Bilder werden einfach nicht erkannt?

MiMa

Top Contributor
Hallo,
aktuell beschäftige ich mit einem Udemy Kurs für JavaFX.
Der Kurs ist sehr gut erklärt und funktioniert bis auf ein paar kleinigkeiten.
Die hier gestellte Frage bezieht sicvh auf die Reaktion von IntelliJ und dem Ressources Ordner bei dem ich nicht ganz durchblicke.

Wenn ich die Bilder "bild1.jpg bis bil4.jpg " im hauptverzeichnis des Ressources Ordner lege, werden alle bilder gefunden und
eingebunden. im Code deklariere ich das gan einfach durch "bild01.jpg" was mir auch einleuchtet.

Was mir nicht einleuchtet ist, das ich im Ressources Ordner die gleiche Verzeichnisstruktur wie im Java Verzeichnis berücksichtige
und das im Code auch noch so deklariere, wird das bild weder gefunden, noch eingebunden. Daher habe ich mal kontroll
if Statement eingebunden um zu sehen welche bilder gültig und welche ungütlig sind.

Wenn ich das Bild im ressources Ordner verschiebe aktualiser das IntelliJ auch korrekt. Warum wird das Bild dann weder gefunden
noch eingesetzt?


Für Hilfe wäre ich Dankbar

M
 

Anhänge

  • IJressourcesBilder.jpg
    IJressourcesBilder.jpg
    183,4 KB · Aufrufe: 0

KonradN

Super-Moderator
Mitarbeiter
Hier stellen sich zwei Fragen:
a) Wie sieht der Code aus. mit dem Du versuchst die Bilder zu laden bzw. diese gezeigte Ausgabe erzeugt?
b) Sind die Dateien auch alle richtig in target/classes kopiert worden? Da sollte also sowohl direkt die bild1.jpg und so direkt in dem Verzeichnis sein und die bild0.jpg in dem entsprechenden Unterverzeichnis.

Und nur um da noch einmal ganz sicher zu sein: Wenn Du Verzeichnisse erstellst und da ist nur ein weiteres Verzeichnis: Das zeigt IntelliJ mit . an. Du hast da udemy/gesky/javafx/ als Verzeichnisse und nicht ein Verzeichnis udemy.gesky, gesky.javafx oder udemy.gesky.javafx?
(Sprich: Keine Verzeichnisnamen mit einem Punkt im Namen!)
 

MiMa

Top Contributor
Das ist der Code.
1. Das Problem mit den Bildern.
2. Obwohl der Scrollbalen Vertikal angeordnet ist, scrollt der Inhalt Horizontal?

Java:
package udemy.gesty.javafx.UIControls;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Insets;
import javafx.geometry.Orientation;
import javafx.scene.Group;
import javafx.scene.effect.DropShadow;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.*;
import javafx.scene.control.*;

public class UIScrollbar02 extends Application {

    // Variablen
    final ScrollBar scrollbar = new ScrollBar();
    final String[] bilder = {
            "udemy/gesty/javafx/UIControls/bild0.jpg",
            "bild1.jpg",
            "bild2.jpg",
            "bild3.jpg",
            "bild4.jpg"
    };

    DropShadow schatten = new DropShadow();
    final VBox vBox = new VBox();

    @Override
    public void start(Stage fenster) throws Exception {

        // Inhalte erstellen und anzeigen
        Group gruppe = new Group();
        Scene inhalt = new Scene(gruppe, 400, 400);
        gruppe.getChildren().addAll(vBox, scrollbar);

        // Effekt
        schatten.setColor(Color.BLACK);
        schatten.setOffsetX(10);
        schatten.setOffsetY(10);

        // VBox
        vBox.setLayoutX(5);
        vBox.setSpacing(10);
        vBox.setPadding(new Insets(20));

        // Scrollbar
        scrollbar.setLayoutX(inhalt.getWidth() - scrollbar.getWidth());
        scrollbar.setOrientation(Orientation.VERTICAL);
        scrollbar.setPrefHeight(400);
        scrollbar.setMax(2000);

        // Bilder
        for (int i = 0; i < bilder.length; i++){
//            final ImageView bildAnzeige = new ImageView(new Image(bilder[i]));
//            bildAnzeige.setEffect(schatten);
//            gruppe.getChildren().add(bildAnzeige);
            try {
                final ImageView bildAnzeige = new ImageView(new Image(bilder[i]));
                System.out.println("Bild : " + bilder[i]);
                bildAnzeige.setEffect(schatten);
                vBox.getChildren().add(bildAnzeige);
            } catch (IllegalArgumentException e) {
                System.out.println("Ungültige URL für Bild: " + bilder[i]);
            }
        }

        // Eventhandling / Listener
        scrollbar.valueProperty().addListener(new ChangeListener<Number>() {
            @Override
            public void changed(ObservableValue<? extends Number> beobachter, Number alterWert, Number neuerWert) {
                vBox.setLayoutX(-neuerWert.doubleValue());
            }
        });


         // Fensterinhalte erstellen und anzeigen
        fenster.setScene(inhalt);
        fenster.show();
    } // start

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

KonradN

Super-Moderator
Mitarbeiter
Das new Image(bilder[i]) greift nicht wirklich auf die Ressourcen zu, die ja auch in einem JAR File sein können. Das es überhaupt funktioniert hat, lag mit daran, dass im aktuellen Verzeichnis wohl gerade die Dateien lagen.

Zugriff auf die Ressourcen kannst Du über Class.getResource oder Class.getResourceAsStream machen. wobei Image als Parameter einen InputStream nehmen kann, daher empfehle ich letzteres.

Damit wäre man bei einem Aufruf wie new Image(getClass().getResourceAsStream(bilder[i]))

Damit das aber funktioniert, würde ich dazu raten, dass Du die Pfade absolut angibst, also mit einem / startest, z.B. "/bild1.jpg".

Und noch der Hinweis: Wenn die Ressource nicht gefunden wird, dann gibt getResourceAsStream null zurück und der Konstruktor von Image wirft eine NPE. Also entweder auf null prüfen (empfohlen) oder nie NPE fangen.
 

KonradN

Super-Moderator
Mitarbeiter
Obwohl der Scrollbalen Vertikal angeordnet ist, scrollt der Inhalt Horizontal?
Du hast ja die Scrollbar nicht irgendwie eingebunden. Das ist einfach ein Control, das aber nichts macht, oder habe ich da etwas falsch verstanden?

Was du vermutlich machen willst: Du willst eine ScrollPane, dessen Pane größer sein kann als die Stage, die ja die Ansicht beschränkt und bei Automatismen auch die Größe der Child Controls beschränkt. Die Scrollbar sollte dann auch automatisch kommen, so Du das nicht unterbunden hast.
 

MiMa

Top Contributor
Danke das mit den Pfaden und der Bilder hat jetzt funktioniert.
Der Scrollbalken ist schon eingebunden und wird über den "scrollbar.valueProperty().addListener(..." beobachtet.
Auf diese weise hat man das erklärt.
Im Abschnitt "Scrollbar" gibt es eine Codezeile die die Ausrichtung festlegt und in diesem Fall Vertikal
Java:
scrollbar.setOrientation(Orientation.VERTICAL);
Der Scrollbalken ist auch Vertikal angeordnet der Inhalt scrollt aber horizontal?
Die Screllbar Set Max auf 2000 zu setzen wurde damit begründet das der Scrollbalren im Fenster 100% anzeigt. Wenn die Länge der angezeigten Bilder größer ist dann bliben diese verdeckt.
 

Anhänge

  • Scrooll01.jpg
    Scrooll01.jpg
    31,3 KB · Aufrufe: 0
  • Scrooll02.jpg
    Scrooll02.jpg
    25,6 KB · Aufrufe: 0

KonradN

Super-Moderator
Mitarbeiter
Du setzt ja auch die x Layout-Werte um:
vBox.setLayoutX(-neuerWert.doubleValue());

Du willst da vermutlich dann die setLayoutY haben. Und dann willst Du auch nicht mit inhalt.getWidth sondern mit getHeight arbeiten.
 

MiMa

Top Contributor
Vielen Dank für deine Hilfe,
das hätte ich dort niemals gefunden :)
Ich freue mich endlich mal was funktierendes mit JavaFX GUI Programmierung zu machen.
Ich habe mir das Ziel gesetzt erstmal die ganzen Dinge mal zu Programmieren ohne das ganze MVC Zeugs dann wird es für mich jetzt klarer wie das ganze funktioniert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Bilder In ein GUI erstellen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
M IDEA IntelliJ Jar Datei Bilder IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
G IDEA IntelliJ Bilder in der fertigen Application IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 10
J Eclipse Fertiges Programm enthält keine Bilder mehr IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
E Eclipse Bilder werden nicht angezeigt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 10
R Bilder in einem Runnable Jar Archiv IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
N NetBeans Bilder ins Projekt importieren IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
G Eclipse: Bilder werden in .jar nicht mehr angezeigt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
R Eclipse: wie Bilder zum Projekt hinzufügen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 13
G Bilder in jar-Datei IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
A Bilder in NetBeans 5.0 BlueJ Edition einfügen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
A verwendete bilder auch in jar ausführen? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
tiimo1234 BlueJ BlueJ: Objekt, welches von anderem Objekt erzeugt wurde, kann nicht in der Object-Bench angezeigt werden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
O Java Eclipse Umlaute werden nicht richtig dargestellt in Konsole IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 10
krgewb IDEA IntelliJ Es kann nicht zu Properties gewechselt werden. IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
B Eclipse Programm kann nicht ausgeführt werden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
I Eclipse Fehler werden nicht angezeigt (Eclipse) IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
M Eclipse JavaDocs werden nicht angezeigt / Linux mint /openjdk-8-jre IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
J Eclipse Mir werden keine Werte beim Debugging angezeigt. IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
F Eclipse Appcompat-v7 Library kann nicht geladen werden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
L Kann erzeugen der build.xml aus von eclipse modifiziert werden? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
F GIT Projekt importiert ... wie kann das Ding in Jars gewndelt werden ? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
L JetBrains Idea - GWT Super Dev Mode kann nicht aktiviert werden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
M Eclipse Änderungen am Quellcode werden nicht übernommen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
J Jemand ne Ahnung warum meine Java Fenster immer schwarz werden? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
M Nachvollziehen welche Methoden aufgerufen werden? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
B Eclipse Eclipse runable Jar erstellen - Klassen, die es nicht mehr gibt werden angezeigt... IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
R Eclipse Plugins werden nicht erkannt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
K cmd-Pfad kann nicht gefunden werden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
D Eclipse Javadocs von User Library werden nicht angezeigt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
H Eclipse Welche Klassen werden benötigt? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 13
F NetBeans Wo werden die Fensterpositionen gespeichert? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
S Eclipse Klassen werden nicht mehr compiliert - Projekt zerstört? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
A Eclipse: Parameter werden doppelt angezeigt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
H Eclipse import pakckages werden nicht gefunden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
S Eingebundene Plugins werden nicht angezeigt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
Meldanor NetBeans 6.8 - Persistence - keine Klassen werden angelegt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
B Manche Breakpoints werden in Eclipse nicht beachtet IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 27
O Methoden und Properties werden doppelt angezeigt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
ARadauer jsp compile fehler werden nicht angezeigt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
O Tool Tipps werden bei Proxyverbindung nicht angezeigt. IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
reibi Eclipse - Classfiles ohne Source werden automatisch gelöscht IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
byte hbm2ddl.auto - Warum werden keine ForeignKeys erzeugt? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
K Eclipse: Objekte können nicht aufgelöst werden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
D Eclipse: importierte Klassen können nicht verwendet werden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2

Ähnliche Java Themen

Neue Themen


Oben