Do you use Swing in your game? Why/Why not?

Hi.

This is simply a note out of curiousity. I have found myself using swing sometimes, and trying to avoid it at other times. What do you guys prefer?

Edit: With Swing, I basically mean UI components that extend JComponent, like JButton, JTextField, and so on.

Pros:

  • Completeness of the widget set
  • Configurability / Look and Feel
  • Reliability of simple components
  • Low development time cost

Cons:

  • Querky implementations for more complex components
  • Complexity integrating with with an accelerated canvas
  • Performance

I tend to steer clear if possible these days, though I nearly always use it for the associated game process tools (level designers, scenario generators etc…)

Kev

I use Swing.

It’s very fast and doesn’t cosume much resources; I run it on another thread.

Lately, I’ve started to use some swing components (like JTextField) for handling easy user input. But, I never draw them. They are just “there”, requesting focus when the game wants user input, and then I have a custom created gui component “mirroring” the textField input to show to the user (with a more appealing-looking tailored image font). I find that this is easiar than going out creating your own L&F for the components.

Of course it’s basically just a quick-hack, but for stuff like input, that happens infrequently in my game, it does the job.

And, I use swing components like JTextArea alot for multiplayer in-game chat.

Beyond that, my on-going project is not really using swing at all. However, I can see that in some games (with alot of static unmovable objects on the screen), swing would do nicely.

IMHO, Swing is pretty darn fast today, espcially with 1.5, so I think we could use swing for game programming, unless you want to do with 3D. :stuck_out_tongue:

also, the previously mentioned point:

“- Complexity integrating with with an accelerated canvas”

is getting on my nerves. Fullscreen is of course not an issue, but windowd mode is. Naturally, one wants to do things the “right way” (we all strive towards it, I guess), and hacks to use canvas with swing, or buffering the frame itself, and translating its graphics from its insets … It just seems so dirty. I wish there was a real JCanvas already!

I use swing because it provides many good components that I want. They aren’t totally pretty, but they work well.

We are using Swing heavily in our game, both in 2D and 3D, as well as with our world-builder and unit-builder editors. The speed of development can’t be beat, it has a good design, you can plug-in different look-and-feels, and the performance keeps getting better and better.

Here’s a question…I’m required to use swing in my project, however I’m also using an active renderer. So basically I have a thread calling “paintComponents” at some target fps in order to draw my “rendered” area as well as a minimal gui. This concept is close to the way JFreeRails operates.

Everything seems to work ok, until I needed a modal dialog. Since my rendering thread is synchronized with the system event queue, any modal dialog kills my ability to draw anything…thus making my tool nothing more than a glorified “window eraser.”

Has anybody encountered anything like this? And if so, is this something I just have to live with?

Questions/Comments are more than welcome.

Thanks,
-Zeb