What is Swing's equivalent of java.awt.GridLayout?

I want to implement a clone of Rogue in Java. However, I want a 2D grid of equally sized cells, instead of a DOS console, to represent ASCII characters. I do not have time to implement 2D sprites or 3D models.

I believe that java.awt.GridLayout is the only class that implements a 2D grid of equally sized cells. However, Swing supersedes AWT. What is Swing’s equivalent of java.awt.GridLayout? Has anyone used it in a 2D game, a la Rogue?

You can use GridLayout with Swing.
If you really insist on using something from the Swing classes you cn do something similar with a SpringLayout, but that would be overkill.

So is java.awt.GridLayout my best bet if I want to implement a clone of Rogue in Java, but with a 2D grid of tiles similar to Minesweeper’s?

How easily can I implement a mouse-driven interface similar to Diablo’s or Dungeon Revealed’s, in which my character moves in the direction of a tile on which I click?

Has anyone released a similar game for Windows? I remember Dungeon Revealed for Macintosh from the late 80s, which is similar (except for 2D artwork instead of ASCII characters in each tile) to what I intend to implement. However, I know of no similar game for Windows. Does anything similar exist for Windows?

http://mac.the-underdogs.org/screenshots/thdunrev.gif

http://mac.the-underdogs.org/index.php?show=game&id=305

No 3D models, no 2D sprites, no color… but the simplicity of the tiled graphics is awesome. I would love to implement that simplicity in a game, with either 2D artwork or ASCII characters in each tile.

Actually, Swing does not really put AWT out of commission. There are several AWT classes used in Swing (such as Color, Font, etc.). The layout managers of AWT are still valid, and there is no problem using them in Swing applications (except for most layout managers being a pain in the derriere anyway…).

The only true incompatibility is between actual GUI components of AWT and Swing. You can still mix them, but there are so many caveats that it isn’t worth the trouble.

As for your layout requirements, I would consider using no layout manager at all, with absolute positioning (‘setBounds(…)’).

Also, it might be simpler for a tile-based map such as yours to have a single component representing the map. This component would then draw all tiles in it’s paintComponent() method, in two nested for() loops.

This would consolidate mouse event handling and other map-related chores, as you would have a single instance for the whole map.

So what classes should I use? As long as I can avoid that damned DOS console that Rogue and Nethack use, I am happy.

You should certainly create your own component. Inherit from JComponent, override paintComponent(Graphics g) and you are ready. For increased performance, remember to set opaque property to true.

As for the graphics, I would suggest getting one of nethack/*angband versions - there is a mega set of tiles there called dg_something. You will get immediate boostrap with large number of tiles done in same graphic style.