The Java Console System Interface library defines an abstract representation layer to which you can plug your application's user interface, and then choose from any of the implementations on start up, allowing your console program to be output in an array of console implementation including JCurses or an emulated terminal via swing
Source and jar distribution from Google Code
The javadoc can be found here
[...] // I instantiate a WSwingConsoleInterface; in this line I could have chosen any other implementation. ConsoleSystemInterface csi = new WSwingConsoleInterface("libjcsi example - Santiago Zapata"); // Lets use some basic IO methods csi.cls(); csi.print(1,1,"Hello, Hello!", ConsoleSystemInterface.CYAN); csi.print(2,3,"This is printed using the Java Console System Interface lib. (libjcsi)"); csi.print(2,4,"Swing Console Box Implementation",ConsoleSystemInterface.RED); csi.print(2,5,"By what name shall you be called?"); String name = csi.input(10); csi.print(2,6,"Hi "+name+", press something..."); CharKey key = csi.inkey(); csi.print(2,7,"By the way, you pressed "+key); // Now lets try a basic component TextBox t = new TextBox(csi); t.setWidth(20); t.setHeight(10); t.setBorder(true); t.setPosition(5,5); t.setText("What a horrible night to have a curse..."); t.draw(); csi.waitKey(CharKey.SPACE); [...]
The distribution includes a modified version of the 1KBRL LUCK, a game which you can use as a sample for your own implementations