Integrating Swing in einem einfachen Text-Abenteuerspiel

Ich bin ziemlich neu in einigen Zwischenkonzepten in Java. Kürzlich habe ich ein Text-Abenteuerspiel namens DazzleQuest erstellt, das vollständig in der Entwicklerkonsole / dem Entwicklerterminal ausgeführt wird. Meine Freunde waren Charaktere, also wollte ich es ihnen zeigen und Erfahrungen mit Java sammeln, indem ich die Funktionalität der Befehlszeile und die Ausgabe von der Konsole auf eine einfache Swing-Oberfläche übertrug, die aus einem @ bestanJTextArea, um die Ausgabe des Spiels und ein @ anzuzeigJTextField, mitActionListener, um Befehle vom Benutzer zu verarbeiten.

Mein HauptDazzleQuest Klasse enthält Methoden namensrun() undhandleCommand(), was ich denke, dass ich mit meinem @ integrieren muFrame class und seine UnterklasseTextFieldHandler [das erweitertActionListener].ch frage mich im Allgemeinen, wie diese Methoden und Klassen am besten integriert werden könne Meine derzeitigen Versuche waren verwirrend und obwohl ich ein grundlegendes Verständnis dafür habe, wie verschiedene Klassen und Methoden miteinander kommunizieren, ist dies vorläufig.

Entschuldigung für die Worthaftigkeit und mangelnde Spezifität. Ich würde meinen Code weitergeben, bin mir aber nicht sicher, wie viel und was ich genau geben soll. Wenn Sie der Meinung sind, dass Sie meine Frage beantworten können, aber ein Beispiel für das benötigen, was ich habe, sagen Sie es bitte. Auch Pseudocode als Antwort wäre willkommen. Vielen Dank! Das zu verstehen, könnte für meine Ausbildung zum Programmierer sehr hilfreich sein.

EDIT: Hier sind vereinfachte Beispiele für meinen Code aus der Version des Spiels, die vollständig in der Entwicklerkonsole ausgeführt wird. Das ist meine HauptklasseDazzleQuest:

public class DazzleQuest {

public void run() {
    listCommands();
    for (;;) {
        StdOut.println(new StringBuilder("You are in ").append(currentRoom.getName()).append(".").toString());
        StdOut.println(new StringBuilder("You can go to: ").append(currentRoom.listExits()).toString());
        StdOut.print("> ");
        handleCommand(StdIn.readLine());
        StdOut.println();
    }

public void handleCommand(String line) {
        String[] words = line.split(" ");
        if (words[0].equals("look"))
            look();
        }
    }

}

nd hier ist mein aktuellesJFrame setup, imFrame class:

import java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JTextArea;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Frame extends JFrame {

    public static JTextField field;
    public JTextArea area;

    public Frame() {
        setLayout(new FlowLayout());

        area = new JTextArea(20, 40);
        area.setEditable(false);

        field = new JTextField(20);
        add(area);
        add(field);
        pack();
        setVisible(true);

         TextFieldHandler handler = new TextFieldHandler();

            field.addActionListener(handler);
        }

        public class TextFieldHandler implements ActionListener{

            public void actionPerformed(ActionEvent event)
            {
                String line = field.getText();
                area.append(line + "\n");
                field.setText("");
            }
        }


    public static void main(String args[]) {

        Frame test = new Frame();
        test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

Ich weiß, wie ich die Ausgabe auf das @ drucJTextArea statt zur Konsole. Mein Problem ist, wie genau man @ bekomhandleCommand() arbeiten mitactionPerformed() in demFrame class, oder ob ich einen Aktionslistener in der Hauptklasse einrichten soll oder so ähnlich. Alle Beispiele für die Implementierung wäre sehr dankbar.

Nochmals vielen Dank für alles, was Sie mir sagen können!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage