Everything Else

Good Java GUI books?

At work I am doing a fair bit of Java GUI programming. To learn Java I have been using a mix of the web and the 2 Core Java books. I have started making progress on finding ways to improve my GUIs. I started looking at GUI Bloopers 2.0 for some good user interface tips, and I am thinking about getting Rocket Surgery Made Easy for some more usability. There seems to be more material that I can ever read on designing good, user friendly, GUIs.

But doing it in Java is an issue. I often end up thinking that there should be a better way to do something, but I can't figure out how. And I hate saying "yea, this interface bug is stupid and it shouldn't be that way, but Java made me do it." Granted, my project chose Java as the language that we are using, so the Java-induced issues are more their fault than mine. But it <i>is</i> my job to do the best I can within the constraints of Java. So, what are the best references that you know of for writing GUIs in Java? Good web sources are fine, but I often find that a well written book is far better than a web source. And if a book actually improves my work, or makes it happen faster, it is well worth the cost. But I don't want to waste money on a useless book.

_________________
-WolvesOfTheNight
You're more likely to find a compassionate conservative than a good Java interface. I can't think of a single Java program with a decent interface.. Used a fair amount of Java apps on OS/2 but they were all pretty awful. Except for smartcache, and that's commandline.

I think you're doomed.
WolvesOfTheNight wrote:
But doing it in Java is an issue. I often end up thinking that there should be a better way to do something, but I can't figure out how. And I hate saying "yea, this interface bug is stupid and it shouldn't be that way, but Java made me do it."


I use apps written in Java quite a bit at work and aside from being painfully slow to load, they have annoying UI issues like mysteriously and randomly changing the focus from the current foreground window to one in the background, inconsistent response to cut-and-paste key sequences, and at times, astonishingly slow responses to buttons being selected with the mouse. All in all, a horrible user experience. I had always assumed it was due to stupid programming by the app developers, so its interesting to see it might not be all their fault.
Well, it is and is not their fault. Java deserves some of the blame. But, depending on the exact issue, it could be something that the developers can and should have fixed.

An example:

My graph window has a button to export the graphs to a .png file. So, when you press it, an standard file selector pops up. You select a directory, enter a file, or select one for overwrite. Fairly standard. Under the hood, I am using the JFileChooser class - a standard java library/class intended for this sort of thing.

The problem: the file name really should end with a .png. So, if the user does not stick .png on the end, we should. But JFileChooser does not provide for this. It has a filter option that lets me limit any file they select to .png, which would be neat if I was opening a file. But it does not have any sort of filter for new files that they decide to save.

Now, anyone looking at this might suggest that I simply take the file name and run it through a simple string processor. No luck- the JFileChooser provides me with a file, creating the file if needed. It does not allow me to edit the name of the file.

There are undoubtedly ways I can deal with this. But it will take time and effort. And I have to decide between working on this, or working on other, much-needed features. So, in the short term, I am working on stuff more urgent that a user interface annoyance. I really will try to come back and clean this up. But we all know what really happens when a programmer says that...

So, it seems to me that Java interface libraries are lacking in the finer points of usability. This often has to do with fine-tuning your GUI to work in a really user friendly way. Working around / fixing them is a pain. So they end up in the final product.

Having said this, there are times when Java has a good and useful way to solve a problem, and I just have to find it.

If one exists, I would like a book that tells me how to make my GUIs better. If not, I will do my best without...

_________________
-WolvesOfTheNight