fbpx
Wikipedia

Abstract Window Toolkit

The Abstract Window Toolkit (AWT) is Java's original platform-dependent windowing, graphics, and user-interface widget toolkit, preceding Swing. The AWT is part of the Java Foundation Classes (JFC) — the standard API for providing a graphical user interface (GUI) for Java program. AWT is also the GUI toolkit for a number of Java ME profiles. For example, Connected Device Configuration profiles require Java runtimes on mobile telephones to support the Abstract Window Toolkit.

Windows form with some AWT examples

History Edit

When Sun Microsystems first released Java in 1995, AWT widgets provided a thin level of abstraction over the underlying native user-interface. For example, creating an AWT check box would cause AWT directly to call the underlying native subroutine that created a check box. However, the check box on Windows is not the same as the check box on macOS or on the various types of Unix. Some application developers prefer this model because it provides a high degree of fidelity to the underlying native windowing toolkit and seamless integration with native applications. In other words, a GUI program written using AWT looks like a native Microsoft Windows application when run on Windows, but the same program looks like a native Apple Macintosh application when run on a Mac, etc. However, some application developers dislike this model because they prefer their applications to look exactly the same on every platform.

In J2SE 1.2, the Swing toolkit largely superseded the AWT's widgets. In addition to providing a richer set of UI widgets, Swing draws its own widgets (by using Java 2D to call into low-level subroutines in the local graphics subsystem) instead of relying on the operating system's high-level user interface module. Swing provides the option of using either the native platform's "look and feel" or a cross-platform look and feel (the "Java Look and Feel") that looks the same on all windowing systems.

Architecture Edit

The AWT provides two levels of APIs:

AWT also makes some higher level functionality available to applications, such as:

Neither AWT nor Swing is inherently thread safe. Therefore, code that updates the GUI or processes events should execute on the Event dispatching thread. Failure to do so may result in a deadlock or race condition. To address this problem, a utility class called SwingWorker allows applications to perform time-consuming tasks following user-interaction events in the event dispatching thread.

Mixing AWT and Swing components Edit

Where there is a Swing version of an AWT component it will begin with J- and should be used exclusively, replacing the AWT version. For example, in Swing, only use JButton, never Button class. As mentioned above, the AWT core classes, such as Color and Font, are still used as-is in Swing.

When drawing in Swing, use JPanel and override paintComponent(Graphics g) instead of using the AWT paint() methods.

Before Java 6 Update 12, mixing Swing components and basic AWT widgets often resulted in undesired side effects, with AWT widgets appearing on top of the Swing widgets regardless of their defined z-order. This problem was because the rendering architecture of the two widget toolkits was very different, despite Swing borrowing heavyweight top containers from AWT.[1]

Starting in Java 6 Update 12, it is possible to mix Swing and AWT widgets without having z-order problems.[2]

Example Edit

import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class MyApp {  public static void main(String[] args) {  Frame frame = new Frame("Application");    frame.add(new Label("Hello!"));  frame.setSize(500, 500);  frame.setLocationRelativeTo(null); // Centers the window    frame.addWindowListener(new WindowAdapter() {  @Override  public void windowClosing(WindowEvent e) {  frame.dispose(); // Releases native screen resources  }  });    frame.setVisible(true);  } } 

Implementation Edit

As the AWT is a bridge to the underlying native user-interface, its implementation on a new operating system may involve a lot of work, especially if it involves any of the AWT GUI widgets, because each of them requires that its native peers be developed from scratch.

A new project, Caciocavallo, has been created, that provides an OpenJDK-based Java API to ease AWT implementation on new systems.[3][4] The project has successfully implemented AWT widgets using Java2D.[5] All the necessary core-JDK modifications have since been pushed to OpenJDK 7,[6] which means that Java can now be used on a graphics stack other than one of those provided by the official JDK (X Window System, OpenGL or DirectX), by including an external library and setting some system properties. A DirectFB backend for Caciocavallo[7] is under development, as is an HTML5 backend; the aim is to deploy existing Swing applications—without Java support—as ordinary web applications running on a web server.[7][8]

See also Edit

References Edit

  1. ^ Fowler, Amy (1994). "Mixing heavy and light components". Sun Microsystems. from the original on 23 December 2011. Retrieved 17 December 2008.
  2. ^ . Sun Microsystems. 12 December 2008. Archived from the original on 17 December 2008. Retrieved 17 December 2008.
  3. ^ Torre, Mario (2 March 2008). "FINAL PROPOSAL: Portable GUI backends". from the original on 19 March 2012. Retrieved 7 September 2008.
  4. ^ Kennke, Roman (18 December 2008). "Caciocavallo Architecture Overview". Retrieved 7 September 2008.
  5. ^ Kennke, Roman (3 September 2008). "Cacio Swing AWT peers". from the original on 13 March 2012. Retrieved 7 September 2008.
  6. ^ "How much has been pushed upstream?". openjdk.java.net. 20 September 2009. from the original on 19 March 2012. Retrieved 7 March 2010. You don't need anymore of those patches, with the latest FontManager push, everything is upstream now, so just use the Cacio repo, it's completely self contained.
  7. ^ a b Kennke, Roman (28 July 2011). "JDK7 and Cacio coolness". Retrieved 8 August 2011.
  8. ^ Eisserer, Clemens. . Archived from the original on 21 March 2012. Retrieved 8 August 2011.

External links Edit

  • java.awt (AWT Javadoc API documentation)
  • AWT documentation
  • java.awt

abstract, window, toolkit, java, original, platform, dependent, windowing, graphics, user, interface, widget, toolkit, preceding, swing, part, java, foundation, classes, standard, providing, graphical, user, interface, java, program, also, toolkit, number, jav. The Abstract Window Toolkit AWT is Java s original platform dependent windowing graphics and user interface widget toolkit preceding Swing The AWT is part of the Java Foundation Classes JFC the standard API for providing a graphical user interface GUI for Java program AWT is also the GUI toolkit for a number of Java ME profiles For example Connected Device Configuration profiles require Java runtimes on mobile telephones to support the Abstract Window Toolkit Windows form with some AWT examples Contents 1 History 2 Architecture 3 Mixing AWT and Swing components 4 Example 5 Implementation 6 See also 7 References 8 External linksHistory EditWhen Sun Microsystems first released Java in 1995 AWT widgets provided a thin level of abstraction over the underlying native user interface For example creating an AWT check box would cause AWT directly to call the underlying native subroutine that created a check box However the check box on Windows is not the same as the check box on macOS or on the various types of Unix Some application developers prefer this model because it provides a high degree of fidelity to the underlying native windowing toolkit and seamless integration with native applications In other words a GUI program written using AWT looks like a native Microsoft Windows application when run on Windows but the same program looks like a native Apple Macintosh application when run on a Mac etc However some application developers dislike this model because they prefer their applications to look exactly the same on every platform In J2SE 1 2 the Swing toolkit largely superseded the AWT s widgets In addition to providing a richer set of UI widgets Swing draws its own widgets by using Java 2D to call into low level subroutines in the local graphics subsystem instead of relying on the operating system s high level user interface module Swing provides the option of using either the native platform s look and feel or a cross platform look and feel the Java Look and Feel that looks the same on all windowing systems Architecture EditThe AWT provides two levels of APIs A general interface between Java and the native system used for windowing events and layout managers This API is at the core of Java GUI programming and is also used by Swing and Java 2D It contains The interface between the native windowing system and the Java application The core of the GUI event subsystem Several layout managers The interface to input devices such as mouse and keyboard and A java awt datatransfer package for use with the Clipboard and Drag and Drop A basic set of GUI widgets such as buttons text boxes and menus It also provides the AWT Native Interface which enables rendering libraries compiled to native code to draw directly to an AWT Canvas object drawing surface AWT also makes some higher level functionality available to applications such as Access to the system tray on supporting systems and The ability to launch some desktop applications such as web browsers and email clients from a Java application Neither AWT nor Swing is inherently thread safe Therefore code that updates the GUI or processes events should execute on the Event dispatching thread Failure to do so may result in a deadlock or race condition To address this problem a utility class called SwingWorker allows applications to perform time consuming tasks following user interaction events in the event dispatching thread Mixing AWT and Swing components EditWhere there is a Swing version of an AWT component it will begin with J and should be used exclusively replacing the AWT version For example in Swing only use JButton never Button class As mentioned above the AWT core classes such as Color and Font are still used as is in Swing When drawing in Swing use JPanel and override paintComponent Graphics g instead of using the AWT paint methods Before Java 6 Update 12 mixing Swing components and basic AWT widgets often resulted in undesired side effects with AWT widgets appearing on top of the Swing widgets regardless of their defined z order This problem was because the rendering architecture of the two widget toolkits was very different despite Swing borrowing heavyweight top containers from AWT 1 Starting in Java 6 Update 12 it is possible to mix Swing and AWT widgets without having z order problems 2 Example Editimport java awt import java awt event WindowAdapter import java awt event WindowEvent public class MyApp public static void main String args Frame frame new Frame Application frame add new Label Hello frame setSize 500 500 frame setLocationRelativeTo null Centers the window frame addWindowListener new WindowAdapter Override public void windowClosing WindowEvent e frame dispose Releases native screen resources frame setVisible true Implementation EditAs the AWT is a bridge to the underlying native user interface its implementation on a new operating system may involve a lot of work especially if it involves any of the AWT GUI widgets because each of them requires that its native peers be developed from scratch A new project Caciocavallo has been created that provides an OpenJDK based Java API to ease AWT implementation on new systems 3 4 The project has successfully implemented AWT widgets using Java2D 5 All the necessary core JDK modifications have since been pushed to OpenJDK 7 6 which means that Java can now be used on a graphics stack other than one of those provided by the official JDK X Window System OpenGL or DirectX by including an external library and setting some system properties A DirectFB backend for Caciocavallo 7 is under development as is an HTML5 backend the aim is to deploy existing Swing applications without Java support as ordinary web applications running on a web server 7 8 See also Edit nbsp Computer programming portalSwing Java Standard Widget ToolkitReferences Edit Fowler Amy 1994 Mixing heavy and light components Sun Microsystems Archived from the original on 23 December 2011 Retrieved 17 December 2008 Bug RFE fixed in current JDK 6u12 build Sun Microsystems 12 December 2008 Archived from the original on 17 December 2008 Retrieved 17 December 2008 Torre Mario 2 March 2008 FINAL PROPOSAL Portable GUI backends Archived from the original on 19 March 2012 Retrieved 7 September 2008 Kennke Roman 18 December 2008 Caciocavallo Architecture Overview Retrieved 7 September 2008 Kennke Roman 3 September 2008 Cacio Swing AWT peers Archived from the original on 13 March 2012 Retrieved 7 September 2008 How much has been pushed upstream openjdk java net 20 September 2009 Archived from the original on 19 March 2012 Retrieved 7 March 2010 You don t need anymore of those patches with the latest FontManager push everything is upstream now so just use the Cacio repo it s completely self contained a b Kennke Roman 28 July 2011 JDK7 and Cacio coolness Retrieved 8 August 2011 Eisserer Clemens HTML5 Canvas backend for Caciocavallo GNU Classpath Archived from the original on 21 March 2012 Retrieved 8 August 2011 External links Edit nbsp Wikibooks has a book on the topic of Java Swings AWT nbsp Wikimedia Commons has media related to AWT java awt AWT Javadoc API documentation AWT documentation AWT Swing java awt Retrieved from https en wikipedia org w index php title Abstract Window Toolkit amp oldid 1161562234, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.