|
Microsoft's Application Foundation Classes (AFC)
are a comprehensive set of Java class libraries providing user interface controls,
graphics and effects classes, and the ability to create and extract cabinet (CAB) files.
AFC's UI controls give Java developers a rich set of UI elements from which they can
quickly build flexible, modern, and powerful user interfaces for their applications.
Developers can, through the com.ms.util.cab APIs, utilize Microsoft's CAB packaging and
compression technology on any virtual machine.
Written in Java, AFC ensures that applications built
using these classes run on the most popular platforms that support Java. The AFC UI
controls are defaulted to the Microsoft Windows UI, and are also fully customizable to reflect the needs of application and applet
designers. AFC supports Active Accessibility for Java, so any application developed using
AFC is automatically accessibility-enabled (where Active Accessibility for Java services
exist).
AFC comprises:
- UI: A rich suite of UI controls, written in Java. UI
controls will run in a number of popular browsers and are automatically
accessibility-enabled where appropriate platform services exist.
- Fx: A suite of classes for graphics and effects, written
in Java. Fx classes will run in a number of popular browsers.
- CAB: A suite of Java APIs for creating and extracting
cabinet files on any virtual machine.
- Platforms and JDK 1.1 and 1.02 compatibility:
Internet Explorer 4.01: AFC's UI and Fx classes
are JDK 1.1 compatible, and are included in Internet Explorer 4.01.
Internet Explorer 3.01 and other pre-JDK
1.1 browsers: This SDK for Java Version 3.0 contains a redistributable, JDK
1.0.2-compatible version of AFC. This redistributable component should be used for applets
requiring distribution on Internet Explorer 3.01 and other popular non-JDK 1.1-compliant
platforms. Full JDK 1.0.2-compatible AFC licensing and redistribution details are included
with the Microsoft SDK for Java Version 3.0 EULA, JDK 1.0.2-compatible AFC Release Notes are included with this SDK, and
differences affecting developers between the JDK 1.02 and 1.1-compatible versions of AFC
are described in the accompanying documentation. In addition, watch www.microsoft.com/java/afc
for the latest updates and documents.
Netscape Navigator 4.03 with JDK 1.1
patch: This SDK for Java Version 3.0 contains a redistributable, JDK 1.1-compatible
version of AFC. This redistributable component should be used for applets requiring
distribution on Internet Netscape Navigator 4.03 with JDK1.1 patch. Full JDK
1.1-compatible AFC licensing and redistribution details are included with the Microsoft
SDK for Java Version 3.0 EULA, JDK 1.1-compatible AFC
Release Notes are included with this SDK, and differences affecting developers between
the JDK 1.02 and 1.1-compatible versions of AFC are described in the accompanying
documentation. In addition, watch www.microsoft.com/java/afc for
the latest updates and documents.
- JDK 1.0.2-compatible AFC
platforms: JDK 1.0.2-compatible AFC will function effectively on Internet
Explorer Version 3.0 and 4.0 and on Netscape Navigator 3.0.4 and 4.0.3 on Windows 95 and
Windows NT 4.0.
JDK
1.0.2-compatible AFC will also function on Navigator 3.0.4 and 4.0.3 on Solaris platforms.
Severe painting and performance problems
are exhibited when running JDK 1.0.2-compatible AFC on both Internet Explorer 3.0 and
Netscape Navigator 3.0.4 and 4.0.3 for the Apple Macintosh as a result of difficulties
intrinsic to the Macintosh VM. Microsoft is therefore not licensing JDK 1.0.2-compatible
AFC for use on the Apple Macintosh at this time.
The JDK 1.1-compatible version of AFC is
available with Internet Explorer 4.0 for Windows 95, Windows NT 4.0, MacOS 7.1 or greater
and Solaris platforms 2.5, 2.5.1 and 2.6.
Please note: Developers may notice variations in the
quality of the JDK 1.0.2-compatible AFC implementation when running across VMs and
browsers, resulting from compatibility issues and differences in VM implementations
Please see the JDK 1.0.2-compatible AFC Release Notes for more details
- JDK 1.1 and 1.0.2 event models: AFC
supports both the JDK 1.1 and JDK 1.0.2 event models. Please consult the AFC API
documentation and articles on www.microsoft.com/java/sdk/20/afc/default.htm
for implementation details.
- AWT/ UI interoperability: Bi-directional
interoperability between UI and AWT is provided, enabling AWT components to be used in AFC
containers and vice versa.
Please note: As AwtUI and UIAwt objects are intended only
to provide a bridge between AWT and AFC, use of AwtUI and UIAwt should be confined to
situations where a bridge is necessary and beyond this should be limited to prevent
performance degradation and to permit the full benefits of AFC to be realized.
AFC's API documentation and articles on www.microsoft.com/java/sdk/20/afc/default.htm give
further implementation details.
- Installation for JDK
1.1-compatible AFC for Netscape Navigator 4.03: (with JDK1.1 patch): AFC11.exe is a self extracting exe that will automatically
install JDK 1.1-compatible AFC on whichever browser is set as the default on your client
machine. Please make sure you have set the browser in which you wish to run JDK
1.1-compatible AFC as default before proceeding with the installation.
- JDK 1.1-compatible AFC for
Netscape Navigator 4.03 (with JDK1.1 patch): Developers may notice variations in
the quality and performance of the JDK 1.1-compatible AFC when running on Netscape
Navigator 4.03 (with JDK1.1 patch), problems include menus appearing at random locations
on your screen resulting from compatibility issues and differences in VM implementations.
- Drag and Drop: AFC supports a limited drag and drop functionality. The AFC
samples demonstrate a drag and drop workaround which takes advantage of the AFC/AWT bridge
in the 'Viewers Sample Applet' sample. Source code for the workaround is provided as part
of the sample.
- FxStyledPen has a supported width of one pixel.
- UIEdit: Multiple font support
and vertical writing are not available. FxFormattedText provides multiple font and
vertical writing support, but this functionality is not directly available as part of our
UIEdit control.
- Serialization: AFC's UI
package is not serialized by default
. It
is possible to add this functionality yourself if you require your components to be
serialized.
- Border Layout: Overridding getPreferredSize() in a
Panel will not cause the panel to have that perferred size. The layout manager may shrink
the panel to a smaller size.
- Layout Managers: Some method names in AFC's
UILayoutManager class have changed.
From |
To |
public Dimension minimumLayoutSize(IUIContainer parent) |
public Dimension getMinimumSize(IUIContainer parent) |
public Dimension preferredLayoutSize(IUIContainer
parent) |
public Dimension getPreferredSize(IUIContainer parent) |
public void layoutContainer(IUIContainer parent) |
public void layout(IUIContainer parent, Rectangle rect) |
|