Getting started with my gui

Hello, I want to implement a gui for my game. But I don't really know which one to choose, i've read the following

Swing: I don't want swing – not customizable enough

BUI : banana user interface – doesn't sound very professional, does it?

Fenggui: Seems to be a good gui, but don't know if it is customizable

Substance: very customizable, but how do I integrate it?

If you want to help me picking: I want a gui that's partially transparent, that can easily be customized (i.e adding new widgets, themes, …), and that uses windows (so I can drag and drop). Which one should I pick? I still doubt between fenggui and substance… It just matters which one can be customized most and if it can be made transparent.

For me, the choice was between FengGUI and BUI.  I’d try them both, in your case.

I ended up going with BUI because of initial frustrations with FengGUI, but, as I said, please try them both.  I can’t provide a FengGUI point of view, but can describe BUI.  With BUI, you customize your widgets using css-like stylesheets, which you load and specify for your components.  You create your widget, specify the stylesheet to use, and you’re done.  You can make your own section in the stylesheet for your component, and specify it to be of that type, then it will have whatever attributes you had specified.  BUI was pretty painless, to me, and was easy to integrate into my app.  The input system was easy, too…just extend/implement the proper listener class (just like with swing), and it works.

I can’t attest to the ability to drag-and-drop windows, so you might need to do more research on that.  Come to think of it, I will have to, as well, to provide an interface similar to most RPG games where you can move the elements at will or enter a mode where you can move them.

For transparency, if you mean alpha transparency (and not how transparent the inner workings are to the programmer), it does indeed support that: see the GUI screenshots on  I didn’t spend all that much time on the Menu GUI, but the others might be helpful in this aspect…come to think of it, I didn’t spend much time at all customizing the GUI.

Just to clarify a bit:

Substance == Swing Look & Feel - so two of your statements are contradictory. The drawback of Swing (and thus substance) is that it is resource hungry and produces a lot of garbage. You can use it with JMEDesktop, which uses a texture to draw on. Which makes it slow to update large areas.

BUI is quite professional - the name probably has to do something with monkeys :wink:

Good to know that. That means I won't start to use substance… Maybe I'll give BUI a try. If it does what I need for my game, I'll be happy to use it.

I am using FengGUI, but I have not customized it.  It appears to be completely customizable, it is skinnable anyway, if that's what you mean by customizable.  Building custom widgets is possible too.  The developers on FengGUI are very responsive to bugs.  Is there anyone listening to bugs on BUI?

As far as speed, I have tried FengGUI on some pretty awful machines with on-board intel graphics cards (I'm intending my project to not need a huge graphics card).  The performance with FengGUI was much better that Swing in jME on a low-end machine.  Not really scientific testing, but it sure looked better to me.

I recommend you go with FengGUI, but I have not used BUI, so I can not compare FengGUI to it.

Is BUI still being supported ? From searching the forums it seems like quite a few people are waiting for update to BUI.


SeySayux said:

BUI : banana user interface -- doesn't sound very professional, does it?

It's a little known fact, but of all fruits bananas are in fact the most professional.

since you're using jMonkeyEngine I doubt you should judge product based on how "professional" the name sounds

As long as no one says it's the Apple you can say what you will…consider this fair warning.  :stuck_out_tongue:

BUI is still supported, but Mark and his team are quite busy.  Sfera and I have made a lot of changes to a "branch" of BUI including Sfera doing the latest JME integration.

You can check it out at

Myself or Sfera can answer any questions you have on it.  I am working on porting the original tutorials I had over to the google code wiki tutorials now, I just don't have a lot of time (or make a lot of time) to update the tutorials currently.

I'll try to get those done as soon as I can.

If you have any BUI bugs, you can let sfera or I know and we'll look into them.

I personally, chose BUI b/c FengGUI took too long for me to "figure out".  It's a personal preference, at that.

i actually can't think of a better name for a jMonkeyEngine gui library than "banana user interface" :smiley:

sfera and I have tried to come up with several ideas and we really liked none of them.

monkey user interface (mui – sounds like a dying cow)

gorilla user interface (gui – not going there)

chimp user interface (cui – too… not right)

Devo (band name short for de-evolution)… devui… de-evolution usage based on the theory of evolution and man using a monkey engine to accomplish tasks… though it's a little more cerebral than I would like.

I even went off onto a whole word association tangent with murders at rue morgue and tarzan and jane and on and on… it keeps coming back to banana user interface… any ideas would be welcomed.  Until then, BUI it is.

How about “imi”, Infinite Monkey Interface!

Not only did the monkeys produce nothing but five pages consisting largely of the letter S, the lead male began by "bashing the hell out of" the keyboard with a stone, and the monkeys continued by urinating and defecating on it.

@GH – the theory being that enough monkeys using this interface could write a game? Or, that enough monkeys coding could have come up with a different name by now? :smiley:

i suppose it all depends on what you mean by "monkey". the jme community was often referred to as monkyes  :lol:

@gerbil: what about BUI-X or BUIX (like BUI-Extended)?

Personally I don’t like the idea of using UI in the name (it is too straight forward). If you ask me, it should be Liana, which you could think about is like a Monkey Swing  :wink:

PS You can think of a nice acronym to go with the name later.

Thinking about lianas i'd recommend this one: as the name seem to fit better

edit:  and while googeling for it i came across:  :-o

the name isn't that important yet.

and i actually don't really care about the name as long as it hast something to do with at least one of these: monkeys, bananas (or other fruit monkeys like), neat animals which get good along with monkeys, something monkeys like to do (don't ever think of suggesting "Bash the User Interface" :P). i just want the name to fit well with the jME name and i don't care if it's an acronym or a backronym :wink:

(don't ever think of suggesting "Bash the User Interface" Tongue)

no way ... eh, wasn't that what BUI translates to  :D