Tower of Babel GUI design.
It used to be that you could tell what language a program was written in just by looking at it running. Visual Basic 3.0 and 4.0 were kind of chunky, Borland Delphi had those nasty yes/no buttons where the check mark floated above the button when it was pressed down, Hubby could tell which version of MFC a program was using. And then we got Java.
You'd think that programs produced in the same language should look about the same. After all, they use the same components. There's a free set of rather nice button images available from somewhere, Sun probably. So why is it that jEdit and Jext look so radically different? They were made for the same purpose: a programming editor with multi-language syntax highlighting. Jext uses jEdit's syntax highlighting code and is written by a Frenchman, Romain Guy. jEdit is written by a big team. Jext looks WAY nicer than jEdit.
My Chronicle program isn't the prettiest thing ever, but it's got themes you can change on the fly and a functional layout. It doesn't make you go "Ooh, that's pretty!" but it doesn't make you say "That's an ugly piece of GUI design" either. Something just doesn't look quite right with jEdit. Jext is easy on the eyes, easy to install, it even gives you an uninstaller, and I am indebted to its' author for showing me a free Java installer creation tool that I plan to use for Chronicle later.
I have nothing against jEdit, it's a very powerful program with excellent features, but Jext is prettier. Users are fickle creatures, easily wooed by simple things like documentation, intuitive GUIs, and prettiness. The first two are sorely lacking in Linux, even if KDE and Gnome do polish up nicely after a bit of tinkering. Prettiness alone can't win the day, but it helps.
So I'm looking at Jext to see how you create prettiness in code. I've given up on using the jEdit syntax highlighting component, it messed up my diary entry loading and switching between entries. Documentation for Chronicle isn't written yet, but I've done it before and not had complaints from my users.
It's not easy to design a GUI that looks good, acts the way you expect AND has all the features you want easily accessible. Study the things that look good, work out what looks less good, experiment always. And write code like someone will see your source files.