I am a starting Java developer, learning just from internet tutorials. I am learning full-screen GUI applications. I was told yesterday that I shouldn’t use AWT in my programs because it is outdated. I already know about light and heavyweight components, the main problem is the mouse and keyboard listeners.
Why is AWT outdated?
How to make a program without AWT (adding listeners to a
JComponent etc)? What kind of Swing things can replace the AWT?
There have been some good answers, but I would like to cover a slightly different aspect. Things that Swing provides beyond AWT.
Swing supports styled documents in
JTextPane & to a limited extent using HTML in some other
JComponents. AWT does not support styled documents in any component.
AWT provides no tree based structure like
JTree, no tabular structure such as
JTable, no version of
AWT has no equivalent (that I can find or recall) for
JColorChooser & none for the simple utility class –
As mentioned in a comment, see the 20+ extra/alternate listeners in the
Pluggable Look & Feel
Swing components can be set to a particular look & feel at run-time, including a native PLAF.
See the screen shots on the Nested Layout Example for some more samples.
In addition to the plethora of AWT layouts, Swing provides:
- Key Bindings. See How to Use Key Bindings for details.
UndoManagerfor undo/redo ability in editable documents.
- Inbuilt double buffering to avoid flicker on repaint.
SwingWorkerfor responsive GUIs.
There is probably a lot more I missed in that brief description, but the bottom line is that Swing is an altogether newer and more enabled GUI toolkit.
Swing both builds on, and relies heavily on, classes in the AWT.
Java’s Swing takes ActionListeners, which are part of the AWT package. If you wish to use swing, you must use some form of an AWT ActionListener. That is just the way things are. I don’t suggest using Java at all for complex guis, but nor would I say that AWT is outdated, as there is no direct replacement. Thus, just go ahead and use AWT.
As an alternative, you could look into JOGL, but that’s more if you are trying to create something game-oriented.