Wie kann Java auf ein User-Input warten?

Guten Tag,

ich programmiere gerade ein kleines Java-Projekt.

Dort hat bis jetzt auch alles geklappt, doch nun weiß ich nicht mehr weiter.

Ich habe für den Start meines Programms dieses GUI erzeugt:

Wie da ja schon steht, soll der User 'W' drücken, damit das Spiel anfängt. Doch ich weiß nicht, wie ich das programmieren kann. Ich habe schon eine Klasse (KeyHandler) angelegt, die KeyListener implementiert und die ich schon meinem Programm hinzugefügt habe, doch passieren tut dabei nichts.

Ich habe auch schon eine Ahnung warum: Die Variable 'commands.isRunning' wird direkt überprüft (und danach nicht mehr) und deshalb der If-Teil überschprungen. Wie kann jetzt Java auf einen User-Input warten, damit die Variable nicht sofort überprüft wird?

Hier ist meine Draw Klasse:

(commands.isRunning ist gerade noch false, soll aber durch das 'W' true werden. Die Methode, die dadurch aufgerufen werden soll, steht in der Klasse Commands)

public class Draw extends JPanel implements Variables {

    Commands commands = new Commands();
    KeyHandler keyHandler = new KeyHandler();

    Player player = new Player();
    Donut donut = new Donut();

    Draw() {
        this.addKeyListener(keyHandler);
        this.setPreferredSize(new Dimension(SCREEN_WIDTH, SCREEN_HEIGHT));
        this.setBackground(Color.black);
        this.setFocusable(true);
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        commands.printStartText(g);
        
        if (commands.isRunning() == true) {

            // Draw Grid
            for (int i = 0; i < SCREEN_HEIGHT / UNIT_SIZE; i++) {
                g.drawLine(i * UNIT_SIZE, 0, i * UNIT_SIZE, SCREEN_HEIGHT);
                g.drawLine(0, i * UNIT_SIZE, SCREEN_HEIGHT, i * UNIT_SIZE);
            }

            // Place Player
            player.placePlayer(g);

            // Place Donut
            donut.placeDonut(g);

            // Place Barrier

            // Place Gadget

            // Set Default Color
            g.setColor(Color.darkGray);

        }
    }
}

Und hier die KeyHandler Klasse:

public class KeyHandler implements KeyListener {

    Commands commands = new Commands();

    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void keyPressed(KeyEvent e) {

        switch (e.getKeyCode()) {
        case KeyEvent.VK_W:
            commands.startGame();
            break;

        case KeyEvent.VK_A:

            break;
        case KeyEvent.VK_S:

            break;
        case KeyEvent.VK_D:

            break;
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {
        // TODO Auto-generated method stub

    }
}

Auch habe ich schon 'System.in.read' hinter 'commands.printStartText(g);' platziert, doch da wurde dann nur ein weißes Bild angezeigt.

Ich hoffe ihr könnt mir helfen!

Schon mal vielen Dank im voraus.

Bild zum Beitrag
Computer, Technik, programmieren, Java, Informatik, GUI
Kann mir jemand helfen, JavaFX in Eclipse zum Laufen zu bringen?

Hallo,

ich bin mit meinem Java-Buch nun bei JavaFX angelangt und muss nun, um den Code weiterverfolgen zu können, dieses installieren. Doch funktioniert dieses aus irgendeinem Grund bei mir nicht.

Das sind die Schritte, die ich aus einigen Websites und Videos habe und durchgeführt habe:

  1. Ich habe das Eclipse-Plugin "e(fx)clipse" installiert.
  2. Ich habe JavaFX17 installiert und den zip-Ordner extrahiert. (Download Website: https://gluonhq.com/products/javafx/)
  3. Dann habe ich in Eclipse eine User Bibliothek angelegt: Window --> Preferences --> Java --> BuildPath --> User Libraries --> New --> (Name eingeben) --> Add External Jars
  4. Die Dateien in dieser Bibliothek mit denen aus den Videos und Websiten verglichen. Das Ergebnis war, dass alle Dateien dabei sind.
  5. Ein JavaFX-Project in Eclipse erstellt: New --> Other --> JavaFX --> JavaFX Project --> (Namen eingeben) --> finish
  6. User Bibliothek zum Projekt hinzugefügt: Rechtsklick auf Projekt --> BuildPath --> Configure BuildPath --> Add Library in ClassPath --> User Library --> Next --> Bibliothek auswählen --> Finish

Mit dem Erstellen des Projekts wurden automatisch ein Package und eine Klasse erstellt, die voller Fehlermeldungen waren. Bei den Websites und Videos sind diese nach dem Hinzufügen der User Bibliothek verschwunden, doch bei mir sind sie weiterhin vorhanden. So sieht das aus:

Ich hoffe ihr könnt mir helfen.

Vielen Dank schon mal im voraus.

Bild zum Beitrag
Computer, programmieren, Java, Eclipse, JavaFX, Technologie
Eine Jar-Datei in der Eingabeaufforderung erstellen?

Ich lerne gerade Java mit einem Buch und bin gerade dabei, eine Jar-Datei über die Eingabeaufforderung zu erstellen. Doch da gibt es etwas das ich nicht verstehe und ich hoffe, dass ihr mir es erklären könnt.

Das ist die Klasse, die ich in eine Jar-Datei umwandeln soll:

package de.galileocomputing.schroedinger.java.kapitel13;

import java.io.IOException;

public class HalloSchroedinger {

    public static void main(String[] args) throws IOException{
        System.out.println("Hallo Schrödinger");
    }

}

Das kompilieren bekomme ich ohne Probleme in der cmd hin:

javac HalloSchroedinger.java

Auch das erstmalige Erstellen einer Jar-Datei:

jar cf SagHallo.jar C:\Users\...\Documents\Java\SchrödingerProgrammiertJava\src\de\galileocomputing\schroedinger\java\kapitel13\HalloSchroedinger.java

Beim Hinzufügen der auszuführenden Main-Methode klappt es aber nicht mehr... In meinem Buch sieht der Text so aus:

jar ufe SagHallo.jar de.galileocomputing.schroedinger.java.kapitel13.HalloSchroedinger de\galileocomputing\schroedinger\java\kapitel13\HalloSchroedinger.class

Es ist ja eigentlich fast genau so, wie beim einfachen Erstellen der Jar-Datei. Doch der Teil nach dem "SagHallo.jar" bis zum Anfang des Pfades gibt mit Rätsel auf. Was ist das? Wie lautet der bei mir?

Das habe ich schon probiert...

C:.Users.'''.Documents.Java.SchrödingerProgrammiertJava.src.de.galileocomputing.schroedinger.java.kapitel13.HalloSchroedinger

...dann wird aber eine "ClassNotFoundException" geworfen.

Ich hoffe ihr könnt mir helfen. Vielen Dank im voraus.

(Ich weiß übrigens, dass man es normalerweise nicht über die CMD macht.)

Computer, Technik, programmieren, Java, cmd, Eingabeaufforderung, JAR, Technologie