The KDE Look and Feel Project is a GPL-licenced Swing pluggable look and feel which uses Qt and KDE for the drawing of widgets. KDE Look and Feel implements most of the Java Look and Feel API including dialogs (ColorChooser, FileChooser, etc.).

Agreed. Apart from the arguably ugly looking widgets and horrible font rendering on many systems, Swing is actually a joy to program in. It is very well designed though some might say overly designed :-)

But the objects I'm mostly referring to are JOptionPane, JPanel, and all of the J(something) objects. It would have been just slightly more intuitive to remove the 'J' prefix, I don't think Microsoft has copyrighted those quite yet.

And the Import JavaX (javax? is that java extension? or just another random suffix?)

I guess I'm one of the few people who likes both Windows.Forms and Swing. Complaining about having to put a J in front of the objects names and importing the javax instead of java is pretty silly, imo. I mean its not like it is confusing or anything. Stick to complaining about speed and aesthetics - you are on much safer ground there.

But the objects I'm mostly referring to are JOptionPane, JPanel, and all of the J(something) objects.

The reason for the "J" is probably that Sun needed some way to descriminate between the old java.awt component set that used the native platform for rendering and the new javax.swing components. I.e. there was allready a java.awt.Panel when JPanel was named.

"It would have been just slightly more intuitive to remove the 'J' prefix"

The reason for that was that the compiler messages when you mixed java.awt.* and javax.swing.* were confusing. Rather than fix the compiler (which admitedly would be a hard thing to do for this particular problem) they chose to rename the components. If less people used the .* form of importing the world would be a better place...

"And the Import JavaX (javax? is that java extension? or just another random suffix?)"

The original idea of the "javax" package was that things would move from javax to java when they were placed into the "standard" library. The problem is that that breaks everyones code, and nobody wants to change the imports. They could have provided a tool to alter the imports but that would still wind up leaving the binaries broken. They could have provided a tool to handle the binaries but that is just a hack.

So the decision was to place it into javax and leave it there (same with othr things taht moved from standard extensions into the standard).

They could not put it into the "java" package as some things, such as Netscape Navigator would not allow non-approved classes into the java package.

So, Jxxx to not have naming collisions with java.awt and javax as it started out as an extension and it is too hard to change it to java now.