We have bitten off more than we can chew.

My team and I, for our term end Java project, are building a silly text-based maze adventure, and we've encountered some unforeseen problems.

As the deadline approaches, i/o for the program is becoming our biggest issue. My question is:

What is the most efficient (and preferably least bug-prone) way to display text (even if it's the output window), and receive keystroke input (that isn't JOptionPane)?

We've considered just using the output window, but we're unsure of which listeners or event handlers to use, and if they're even able to grab this input when using the output window... (Scanner doesn't seem to work with 1.4.2). One of our group members has started delving into gui interfaces (an input field, and output pane) as well, but we're unsure of how to implement it.

Essentially, any class needs to be able to "speak" (Have text echoed) and "listen" (wait for a keystroke).

We'd really appreciate any help offered.