
I shall start with the AWT before moving into Swing to give you a complete picture of Java Graphics. For advanced 2D graphics programming, read "Java 2D Tutorial". The best online reference for Graphics programming is the "Swing Tutorial". You need to refer to the "JDK API documentation" for the AWT/Swing APIs (under module sktop) while reading this chapter. Furthermore, developers have moved to use technologies such as HTML5 as the basis of webapps. Other than AWT/Swing/JavaFX graphics APIs provided in JDK, other organizations/vendors have also provided graphics APIs that work with Java, such as Eclipse's Standard Widget Toolkit (SWT) (used in Eclipse), Google Web Toolkit (GWT) (used in Android), 3D Graphics API such as Java bindings for OpenGL (JOGL), Java3D, and etc. JavaFX was moved out from the JDK in JDK 11, but still available as a separate module. The latest JavaFX, which was integrated into JDK 8, was meant to replace Swing.JFC has been integrated into core Java since JDK 1.2. JFC consists of Swing, Java2D, Accessibility, Internationalization, and Pluggable Look-and-Feel Support APIs. Swing API, a much more comprehensive set of graphics libraries that enhances the AWT, was introduced as part of Java Foundation Classes (JFC) after the release of JDK 1.1.Most of the AWT UI components have become obsolete and should be replaced by newer Swing UI components. There are current three sets of Java APIs for graphics programming: AWT ( Abstract Windowing Toolkit), Swing and JavaFX. I will describe another important OO concept called nested class (or inner class) in this article. I shall assume that you have a good grasp of OOP, including composition, inheritance, polymorphism, abstract class and interface otherwise, read the earlier articles. However, re-using them are not so difficult, if you follow the API documentation, samples and templates provided. Writing your own graphics classes (and re-inventing the wheels) is mission impossible! These graphics classes, developed by expert programmers, are highly complex and involve many advanced design patterns. In this article, I shall show you how you can reuse the graphics classes provided in JDK for constructing your own Graphical User Interface (GUI) applications. These classes are self-contained and are reusable. You can create high-level abstract data types called classes to mimic real-life things. As discussed, OOP permits higher level of abstraction than traditional Procedural-Oriented Languages (such as C). So far, we have covered the basic programming constructs (such as variables, data types, decision, loop, array and method) and introduced the important concept of Object-Oriented Programming (OOP).
