Migrate from GitHub to SourceForge with this tool. Check out all of SourceForge's recent improvements.

Joxy Look and Feel / Blog: Recent posts

Switching to Maven

Previously, we were using no build system to build the Java source code. For the next release, 0.3.0, we will be switching to the Maven build system.

You can see the current Maven version in the maven-conversion Git branch.

Posted by Willem3141 2013-08-16

Joxy 0.2.0 released

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.


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)... read more
Posted by Willem3141 2013-04-25

JButton, JTabbedPane and icon improvements

Since the previous blogpost, quite a lot has happened in our Git repository :-)

Button background colour

Oxygen has a nice trick to improve the appearance of buttons when they are placed on the background gradient of the window: the background colour varies slightly with the gradient colour. That means that the higher buttons are placed, the lighter their background is painted. This improves the look of the buttons.
Now for the news: Joxy does this now, too (commit [646344]).... read more

Posted by Willem3141 2013-03-24

Nicer tabs for Netbeans

The tab controls of Netbeans are pretty good, but not when using Joxy. This happens because Netbeans doesn't use a standard Swing component for the tab, but its own component that Joxy doesn't style.

Fortunately in Netbeans 7.2 the option has been added to switch the tab implementation to a normal JTabbedPane, that Joxy does style.

A simple way to do this is the following:

  • go to Tools > Options;
  • click the Miscellaneous item;
  • go to the Windows tab;
  • select the check-box Multi-row tabs.... read more
Posted by Willem3141 2012-12-23

In the meantime: lists, trees and a performance bug

Quite a long time no blog posts, but that doesn't mean we aren't working on Joxy! The following improvements will be available in the next stable Joxy version.

JList improvements
A much improved style for the JList was implemented. This features the following:

  • an Oxygen-like background and border;
  • an Oxygen-like hover indicator when you hover an element;
  • an Oxygen-like selection indicator when you select an element;
  • focus and hover "glows" for the entire JList component.... read more
Posted by Willem3141 2012-11-30


The unstable version of Joxy from now on automatically substitutes nice KDE borders for the ugly Java default borders. See the following screenshot:

KDE-like borders with Joxy

We also took the opportunity of completely revising the text field components (JTextField, JTextArea, JFormattedTextField, etc.) They now use the new borders, and look nicer in general. Furthermore some bugs were fixed.... read more

Posted by Willem3141 2012-09-09

Joxy 0.1.0 released

We are proud to release version 0.1.0 of Joxy. This release focused on fixing bugs, but there are also some new features.


This is the complete changelog for Joxy 0.1.0.

New features:

  • New components: JTree, JSplitPane, JFormattedTextField, JPasswordField, JTable with the header and JInternalFrame (only the radial background)
  • Redesigned JMenu and JMenuItem: we now have accelerators and submenus
  • Better highlight colours for the menu
  • Defaults for all KDE configuration options. That means it should now work on other operating systems too
  • Better arrow buttons in the JTabbedPane and the JScrollPane, with hover effects. Furthermore the arrow buttons of a scroll bar are disabled if it is not possible to scroll in that direction
  • JTextFields have a button that clears the contents... read more
Posted by Willem3141 2012-08-17

Joxy in Chakra Linux

We proudly announce that we received word that Joxy has been packaged in the community repositories of Chakra Linux. It can be found here. Of course, we are very happy with this news and extra motivated to work on Joxy. If you want Joxy to make it to the official repositories, please vote for it.

Posted by Thom Castermans 2012-06-02

Joxy 0.0.3 released

Today a new version of Joxy, 0.0.3, has been released! This version brings a large amount of improvements, such as native text rendering, animations, disabled states of components, and many new GUI components that are styled.


This is the complete changelog for Joxy 0.0.3.

New features:

  • Native text rendering (Joxy calls Qt to render its text) with caching
  • Newly supported components: JTable (except the table header), JEditorPane, JComboBox (editable and non-editable), JOptionPane (including Oxygen icons), JList, JScrollPane, JSpinner, JToolTip, JTextPane (basic)
  • Vastly improved JFileChooser with icons
  • KDE-like arrows on the JTabbedPane
  • Caching for the radial window background
  • A bash script for compiling the native code for the native text rendering
  • Support for native KDE notifications (not mature at the moment, switched off by default)
  • Move (almost) all painting to designated classes (joxy.painter package)
  • Improved the look of the JButton (and derivatives), with a larger shadow
  • Animations for the hover and focus indicators on many widgets
  • HTML support for JCheckBox and JRadioButton
  • The disabled state is shown on JButtons and derivatives... read more
Posted by Willem3141 2012-05-12

Animations on JButtons

For the hover indicator (the border, that is blue by default, that appears when you move the mouse cursor on a button) Oxygen has a nice fading effect, so that buttons seem to glow when you hover them.

We now have this subtle effect also in Joxy for JButtons and JToggleButtons. The other components whose KDE counterparts have the glowing effect, such as the JComboBox and the JRadioButton, will get animations in Joxy soon.... read more

Posted by Willem3141 2012-05-11

The notification system

In Java an application can send a notification to the system tray, by using TrayIcon.displayMessage(). Unfortunately, in KDE this produced a visually horrible box that looks nothing like the nice notification system.

It turns out to be rather difficult to change this behaviour. One needs to mess with the Java AWT internals by subclassing the XToolkit and using the resulting JoxyToolkit instead of XToolkit. In JoxyToolkit the method for producing a notification was changed to use the notify-send program. This produces a nice notification that also is put in the notification list.... read more

Posted by Willem3141 2012-04-16

Icons in the file chooser

Yesterday I implemented a system to let the file chooser use appropriate icons for various file types. Before, all files had the same Oxygen "unknown type" icon.

I used a MIME type mapping first, noticing that the Oxygen icons are stored by the MIME type of the file they represent. Unfortunately it seems that the Java extension-to-MIME-type mapping is very bad, and only recognizes a few types of files.... read more

Posted by Willem3141 2012-03-31

Native text rendering

Native text rendering in Joxy

Today we finally got the beginning of native text rendering working. The upper window in the screenshot shows the default Java text rendering, which is much less readable than the KDE/Qt text rendering. With help of the so-called Java Native Interface, we now are able to call Qt to do the text rendering for us. This is shown in the lower window in the screenshot.... read more

Posted by Willem3141 2012-03-02

Joxy 0.0.2 released

Today Joxy 0.0.2 is released. Major improvements over Joxy 0.0.1 are:

  • Many new components look Oxygen-like, for example the JTabbedPane and the JProgressBar.
  • Improvements on JMenu and JButton.
  • Many bug fixes. Most notably the JFileChooser doesn't throw an exception anymore when opened, instead a temporary quick-and-dirty solution is provided.

You can download the new version from the Downloads section, or you can get the source from the Git repository.... read more

Posted by Willem3141 2012-02-12