Se ti interessa avere un componente che faccia da console "grafica", con un aspetto e soprattutto con un comportamento il più vicino possibile a quello di una console reale, sappi che farlo "da zero" è parecchio complesso. Quindi innanzitutto cerca in rete se esiste già (è possibile) una qualche libreria che offre un componente di questo tipo e che magari, si spera, riesca a fornire la coppia di oggetti PrintStream/InputStream, in modo da poterli assegnare direttamente a setOut/setIn di java.lang.System.
Se invece ti accontenti di un JTextArea non editabile per l'output e un JTextField (o altro JTextArea) per l'input, allora è già un pochino più semplice ma facendolo da zero devi comunque affrontare un paio di aspetti non banali.