Up to Speed with Swing: User Interfaces with Java Foundation Classes