Savok, you don't think the code is great ? Well maybe not looking at it from years of experience or anything, but it takes most people alot more then a few weeks to learn to code somewhat effectively on their own.
Threading, Using Polling, Integration between UI and game-logic. The fact that you care about that's great and its a good thing to think about, But remember its your first small project. Don't be to hard on yourself.
And its great to see a good attitude on the project with regards to it as a learning one. You might need to learn a bit about algorithms before fully attempting it though.
I just took the opportunity to check out your code Savok. Definitely ahead of the curve for someone with your experience. If you keep writing java (and you should, even if you pick another language to learn and use as well), you should get used to adding javadoc comments to every class and method. This has two advantages, it can help you keep your own code strait for yourself, and it can be used to automatically generate a javadoc website explaining your interface when you get to the point where you are going to want to work with others on a large project.
:D *encouraged*
I tried to do some javadoc comments, but when I run it from the command line it doesn't like that my .java files are sometimes encoded in UTF-8 w/o BOM. (since I'm working with CP437, I have to use a bunch of unicode characters, which are then translated to CP437 for output. This would actually be pretty easy to expand to all of Unicode if I had a tileset.)
I've gotten my most recent work to a point where it's not too embarrassing to show to people; if anybody actually wants to see it (and by the download counter on the last one, it seems they do), they can find it
here (source files are inside the jar - open it). I've edited the OP to reflect this.
If you don't mind, I have a short java question whose answer I couldn't find from hours of searching: If you've compiled the program to a .jar, how do you get a list of the files in the .jar? Since the program doesn't know what files are in there and it wants to dynamically load them, this is troublesome.