La actualización de Java JFrame no funciona

Necesito ayuda real con mi proyecto Java. Es un JFrame controlado por la consola, donde los comandos que escribe en la consola DEBEN reaccionar a la ventana JFrame, solo que no lo hace. Este es un gran problema. Aquí está mi código (Engine.java):

package com.boldchicky.commandsrpg.Main;

import java.io.*;

public class Engine {
public static boolean running;
public static GenerateWorld gw;

public static void main(String[] args) throws IOException{
    gw = new GenerateWorld();
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    running = true;
    while(running){
        System.out.println("Enter a command:");
        String command = input.readLine();
        if(command.equalsIgnoreCase("move up")){
            gw.update(gw.getGraphics());
            GenerateWorld.x += GenerateWorld.dx;
            System.out.println("Moved!");
        } else {
            System.out.println(CommandControl.command(command));
        }
        if(CommandControl.add){
            String command2 = input.readLine();
            System.out.println(CommandControl.add(command2));
            CommandControl.add = false;
        }
        else if(CommandControl.remove){
            String command2 = input.readLine();
            System.out.println(CommandControl.remove(command2));
            CommandControl.remove = false;
        }
    }
    if(!running){
        System.exit(0);
    }
}
}

CommandControl.java:

package com.boldchicky.commandsrpg.Main;

import java.util.ArrayList;
import java.io.*;

public class CommandControl {
static ArrayList inv = new ArrayList();
public static boolean add = false;
public static boolean remove = false;
public static boolean move = false;
public static String commandReact = "";

public static String command(String command){
    BufferedReader input = new BufferedReader(new        InputStreamReader(System.in));
    if(command.equalsIgnoreCase("inventory")){
        if(inv.size() == 0){
            commandReact = "Empty!";
        }  else {
            commandReact = "";
            for(int i = 0; i<inv.size(); i++){
                commandReact += (String) inv.get(i) + "\n";
            }
        }
    }

    else if(command.equalsIgnoreCase("add")){
        add = true;
        commandReact = "What do you want to add?";
    }
    else if(command.equalsIgnoreCase("remove")){
        remove = true;
        commandReact = "Waht do you want to remove from your inventory?";
    }
    else{
        commandReact = "Please try again!";
    }
    return commandReact;
}

public static String add(String command){
    if(add){
        inv.add(command);
        commandReact = "Added!";
    }
    return commandReact;
}

public static String remove(String command){
    if(remove){
        if(inv.indexOf(command) != -1){
            inv.remove(inv.indexOf(command));
            commandReact = "Removed!";
        } else {
            commandReact = "Sorry! There is no " + command;
        }
    }
    return commandReact;
}
}

GenerateWorld.java:

package com.boldchicky.commandsrpg.Main;

import java.awt.*;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.image.*;
import java.io.File;
import java.io.IOException;

public class GenerateWorld extends JFrame{
public static int x = 0, y = 0, dx = 15, dy = 15;

public GenerateWorld() throws IOException{
    JFrame frame = new JFrame("Frame");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(300, 300);

    Image background = null;
    Image player = null;
    String backgroundPath = "C:\\Users\\Jesse Du\\Documents\\java eclipse\\CommandsRPG\\res\\grass.png";
    String playerPath = "C:\\Users\\Jesse Du\\Documents\\java eclipse\\CommandsRPG\\res\\player.png";
    background = ImageIO.read(new File(backgroundPath));
    player = ImageIO.read(new File(playerPath));
    ImagePanel panel = new ImagePanel(background, player);
    frame.getContentPane().add(panel);
    frame.show();

    frame.setLocationRelativeTo(getRootPane());
    frame.setResizable(false);
    frame.setVisible(true);
}
}

ImagePanel.java:

package com.boldchicky.commandsrpg.Main;

import java.awt.*;

import javax.swing.JPanel;

public class ImagePanel extends JPanel{
private Image backgroundImage;
private Image player;

public ImagePanel(Image background, Image player){
    super();
    this.backgroundImage = background;
    this.player = player;
}

public void paintComponent(Graphics g){
    super.paintComponent(g);
    g.drawImage(this.backgroundImage, 0, 0, null);
    g.drawImage(this.player, GenerateWorld.x, GenerateWorld.y, null);
}
}

¡GRACIAS! :RE

Respuesta 1

Digamos que tenía una JMenuBar. En ese JMenuBar, tuve un JMenu. En ese JMenu, había otro menú, y en ese menú, había elementos. ¿Hay alguna forma de hacer esto?

Estoy usando archivos mapeados de memoria en algún código Java para escribir rápidamente en un archivo 2G. Estoy mapeando todo el archivo en la memoria. El problema que tengo con mi solución es que si el archivo en el que estoy escribiendo ...

Estoy tratando de completar una tarea para la universidad. He hecho la mayor parte del código y, por lo que puedo decir, debería funcionar. Sin embargo, sigo recibiendo un error. No estoy realmente seguro de qué ...

Voy a tener alrededor de 10 o incluso más solicitudes de publicación http en mi aplicación de Android, la mayoría de ellas son de muy poco tiempo. Según tengo entendido, no puedo realizar ninguna operación de red en mi subproceso de interfaz de usuario. Los ...