It has taken a long time, but Joxy 0.2.0 is ready! You might wonder why there is no 0.1.1 version or something like that. Because there are a lot of new features, we decided to name this release 0.2.0 to reflect that.
Changelog
This is the complete changelog for Joxy 0.2.0.
New features:
- KDE-like borders are substituted for the default Java borders (for example TitledBorder)
- Improvements to the text components (JTextField, JTextArea, etc.): nicer borders and the non-opaque state is handled correctly
- The JList component looks much better: it has the correct background and border, a hover and focus effect for the entire list, and Oxygen-like highlights for elements when you hover or select them
- The JTree component now has the correct background and border
- JCheckBoxMenuItem and JRadioButtonMenuItem now use our JMenuItem delegate, which means that they look much better. We still have to implement the checkbox / radio button for these elements
- (Bug #10) JButtons (and the like, such as a non-editable JComboBox) now have a position-dependent background colour: the higher the component, the lighter it gets, to blend with the radial background of the window
- Painted elements are now cached for better performance
- A JTabbedPane now has hover effects for individual tabs, and the positioning of tabs has been improved
- Icon effects: when you hover an element the icon becomes a little bit brighter, and when an element is disabled, the icon becomes black-and-white (however, reading the KDE configuration settings for this is not yet implemented)
Fixed bugs:
- Many fixes on colours (for example: JMenuItems now have the correct text colour when you set it)
- Native text rendering works correctly now for UTF-8 encoded text (patch by Vitaliy, thanks!)
- InvalidArgumentExceptions were thrown when a very small border had to be painted (because the gradient coordinates were invalid then)
- The JComboBox dropdown list used to have two borders
- Submenu arrows in disabled JMenus were not painted grey
- (Bug #12) When switching from Joxy to another look-and-feel and already having created the JRootPane (this is actually the application's mistake), Joxy's remaining JoxyRootPaneUI caused the application to crash. We added a workaround for this
- Various text components were using an incorrect colour for the selection background
- Due to an oversight, the JTextField (and JPasswordField) clear icon was being read from disk every time it was needed, instead of reading it once and painting it from a BufferedImage
- The font of JPanels was not set to the KDE font. This is needed, since some applications determine the font for painting custom components by picking the font of an arbitrary JPanel
- A NegativeArraySizeException happened because of the new painter caching
- (Bug #8) The clear button was still being painted in disabled JTextFields
- NullPointerExceptions were being thrown when an application set the header object of a JTable to
null
- (Bug #15) JRootPane didn't repaint in several applications, causing a mess in the GUI
- A severe performance bug in the custom borders (they were being applied in an infinite loop instead of only once)
- JToggleButtons in JToolBars still had their background painted, while this was already fixed for normal JButtons
- (Bug #11/#14) A nasty opacity issue for JTextFields, causing painting problems. This was actually caused by a strange design decision in Swing, where the
opaque
value was used for two conflicting things; see the bug report of bug #11 for more information
- NullPointerException when an application set the title of a TitledBorder to
null
Getting Joxy
Note: we are still busy adjusting our web site, so Joxy 0.1.0 is still mentioned there. However, you can already download Joxy 0.2.0. The website is now up-to-date.
You can download Joxy under the Files section above. If you prefer, you can also get Joxy's source code at the Git section. On our site, you can find a complete guide about how to get and install Joxy.