9.19. Using Swing and AWT Inside SWT
Problem
You want to use Swing or AWT graphical elements inside an SWT application.
Solution
SWT (in Eclipse 3.0) supports embedding Swing/AWT widgets inside SWT widgets. Before Version 3.0, such support worked only on Windows. In Eclipse 3.0, it’s now working in Windows for JDK 1.4 and later, as well as in GTK and Motif with early-access JDK 1.5.
Discussion
To work with AWT and Swing elements in SWT, you use the
SWT_AWT class. As an example
(SwingAWTApp at this book’s
site), we’ll create an application with an AWT frame
and panel, as well as a Swing button and text control.
We’ll start with a new SWT composite widget:
Composite composite = new Composite(shell, SWT.EMBEDDED); composite.setBounds(20, 20, 300, 200); composite.setLayout(new RowLayout( ));
Now add an AWT Frame window object to the
composite using the SWT_AWT.new_Frame method, and
add an AWT Panel object to the frame:
java.awt.Frame frame = SWT_AWT.new_Frame(composite); java.awt.Panel panel = new java.awt.Panel( ); frame.add(panel);
We can now work with Swing controls. In this example, we’ll add a Swing button and a Swing text control to the AWT panel:
final javax.swing.JButton button = new javax.swing.JButton("Click Me");
final javax.swing.JTextField text = new javax.swing.JTextField(20);
panel.add(button);
panel.add(text);All that’s left is to connect the button to a listener to display a message when that button is clicked. You can see how that works in Example 9-5.
Example 9-5. Using Swing ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access