Integrando o Swing em um jogo simples de aventura de texto

Eu sou bastante novo em alguns conceitos intermediários em Java. Recentemente, criei um jogo de aventura em texto chamado DazzleQuest, que roda inteiramente no console / terminal do desenvolvedor. Envolve meus amigos como personagens, então eu queria mostrar a eles e ganhar experiência com Java, transferindo a funcionalidade da linha de comando e da saída do console para uma interface Swing simples composta por umJTextArea para mostrar a saída do jogo e umJTextFieldcomActionListener, para manipular comandos do usuário.

Meu principalDazzleQuest A classe contém métodos chamadosrun() ehandleCommand(), que eu acho que preciso integrar ao meuFrame classe e sua subclasseTextFieldHandler [que se estendeActionListener]Gostaria de saber, em geral, qual é a melhor maneira de integrar esses métodos e classes. Minhas tentativas atuais têm sido confusas e, embora eu tenha uma compreensão básica de como comunicar diferentes classes e métodos, é uma tentativa.

Desculpas pelo excesso de palavras e falta de especificidade. Gostaria de compartilhar meu código, mas não tenho certeza de quanto e exatamente o que dar. Se você acha que pode responder à minha pergunta, mas precisa de um exemplo do que eu tenho, por favor, diga-o. Até o pseudocódigo como resposta seria apreciado. Obrigado! Compreender isso pode ser muito útil para minha educação como programador.

EDIT: Aqui estão exemplos simplificados do meu código da versão do jogo que roda inteiramente no console do desenvolvedor. Esta é a minha turma principalDazzleQuest:

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();
        }
    }

}

E aqui está o meu atualJFrame configuração, noFrame classe:

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);
    }
}

Eu sei como imprimir a saída para oJTextArea em vez de para o console. Meu problema é como exatamente obterhandleCommand() trabalhar comactionPerformed() noFrame classe, ou se devo configurar um ouvinte de ação na classe principal ou algo parecido. Quaisquer exemplos de implementação seriam muito apreciados.

Mais uma vez obrigado por qualquer coisa que você pode me dizer!

questionAnswers(1)

yourAnswerToTheQuestion