The ideal Swing application running under the Windows look and feel would be indistinguishable from its native running counterparts, however due to both changes in the native Windows look and feel (Windows 98 , Windows 2000, etc.) and atrophy of our existing Windows look and feel implementation, this is not the current reality. Our goal for this release is to provide an updated Windows look and feel which integrates seamlessly into the Windows desktop.
This project is composed of a set of independent smaller projects, which involve either fixing a current emulation deficiency or adding functionality to track 2000/98 features. In some cases the project spans both Swing and AWT:
com.sun.java.swing.plaf.windows
look and feel package rather than introducing a new 'window2000' package. Almost
all of the new functionality will be keyed off of Windows native user preferences
so that an updated windows look and feel package will gracefully run on either
Windows 95
, Windows 98
, Windows NT
or Windows 2000 machines. In other words, if a running
Swing application detects that a particular user preference (such as Menu fading)
doesn't exist, then the windows look and feel will not execute that feature.
The focus of this project will be on quality, not quantity. Where we deem a particular feature is not implementable with a high quality result, we will defer that feature to a future release when we can emulate it with better fidelity.
There are many bugs filed against our Windows look and feel and our target is to fix them by the final merlin release. We are tracking these bugs with a "w2k" keyword. See Windows Look And Feel Buglist for a list of these windows look and feel bugs.
The current Windows look and feel in Swing only tracks the user's desktop color scheme (via AWT's SystemColor mechanism). However, on the Windows desktop, the user can set many more GUI preferences, such as fonts, sounds, metrics, etc. and can change them at any time and have Windows programs dynamically reflect those changes. We are revising Swing to honor a wider range of user preferences and to also support responding to dynamic changes made by the user. See Windows Desktop Properties Support Specification for details.
Our current list is only capable of displaying a single column and needs to be updated to support wrapping into multiple columns (like the Windows Explorer pane). This feature is also needed to better support the Windows filechooser. See JList Spec update for details.
Buttons contained inside toolbars have become flat in appearance and only when they are 'rolled over' do the borders appear. This feature is supported by the Metal look and feel, but will be added as a general Swing toolbar feature.
The titlebars on toplevel windows in Windows 2000 by default use a gradient pattern instead of a solid bar color. We get this for free on toplevel windows such as JFrame, however we will use Java2D to implement this rendering for JInternalFrame.
Almost all PCs these days come with a scroll-wheel on the mouse and to support this AWT is adding support for scroll wheel input and Swing's scrolling components (JScrollPane, JScrollbar) are being modified to handle this new event type. See MouseWheel API for details of AWT support and see JScrollPane changes for details of support in Swing.
In windows the user can set a desktop property which causes applications to hide their keyboard navigation cues *until* ALT is pressed, at which time they magically appear. If the user has this option set on the desktop, Swing will implement this behavior in its menus. See Keyboard Navigation Spec for more information.
The most obvious feature addition to the Windows look and feel is the new stylistic menu animation. In Windows 98 , menus can be set to appear by sliding out. Windows 2000 then introduced a very hip fade-in/fade-out for menus and tooltips.
In order to ensure the most accurate visual effect, this feature is implemented by forcing menus/tooltips to be true toplevel "heavyweight" windows which can take advantage of win32 native window animation functionality inside the AWT.
Although Swing's JFileChooser component closely resembles the Windows file chooser, there are some deficiencies which limit it's use on the Windows platform, such as the lack of support for network browsing and the Windows virtual desktop ("My Computer", "My Network", etc.). See JFileChooser Spec update for more information.