Skip to main content

By clicking Submit, you agree to the developerWorks terms of use.

The first time you sign into developerWorks, a profile is created for you. Select information in your developerWorks profile is displayed to the public, but you may edit the information at any time. Your first name, last name (unless you choose to hide them), and display name will accompany the content that you post.

All information submitted is secure.

  • Close [x]

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerworks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

By clicking Submit, you agree to the developerWorks terms of use.

All information submitted is secure.

  • Close [x]

Migrate your Swing application to SWT

Yannick Saillet (ysaillet@de.ibm.com), Software Engineer, IBM
Yannick Saillet
Yannick Saillet is a software engineer at the IBM Laboratory of Boeblingen in Germany. Yannick joined IBM Germany as software developer in 1998. He first worked for IBM Learning Services as a software engineer in several distributed learning projects. He joined the IBM Boeblingen Laboratory in 2000 and since that date has been active in the development of the DB2 Intelligent Miner products. He received his master degree from the Ecole Superieure des Sciences et Technologies de l'Ingenieur de Nancy (ESSTIN) at the University of Nancy in France.

Summary:  One of the reasons for the success of the Eclipse platform is the performance of its user interface compared to other Java applications. The SWT is a key contributor to that success. SWT allows you to build cross-platform user interfaces that are as rich as Swing UIs and that perform as well as native UIs, but the toolkit has a drawback: SWT is not compatible with AWT and Swing. Mixing SWT and AWT panels in the same application can have disastrous effects. Thus, if you want to deliver an existing Swing tool as an Eclipse plugin, you need to rewrite its UI with SWT. A lofty task for complex UIs. Java developer and Eclipse enthusiast Yannick Saillet offers this comprehensive, hands-on guide to porting a Swing application to SWT using extensive code samples to illustrate the techniques. This tutorial is very comprehensive and will require significant time to complete. However, it serves as excellent reference material. We recommend you download the PDF for offline viewing.

Date:  19 Jan 2004
Level:  Introductory PDF:  A4 and Letter (770 KB | 103 pages)Get Adobe® Reader®

Activity:  25296 views
Comments:  

About this tutorial

What is this tutorial about?

Since its first release and its donation to the open source community in 2001, the Eclipse platform has been continually gaining importance in the tool-provider community. The Eclipse consortium already regroups more than 40 industry-leading companies that deliver or plan to deliver tools that can be plugged in the Eclipse platform, or products based on the Eclipse platform.

The advantages of the Eclipse platform for tool developers are obvious:

  • For the first time, there is a high-performing, vendor-independent platform that has been widely accepted by the industry.

  • The platform's highly modular nature and great extensibility allow a seamless integration of a variety of tools coming from different vendors. Users can get the best tools from different providers, and use them together without having to worry about interoperability.

  • By providing tools as Eclipse plugins, tools providers can cover with one release all the Eclipse-based products on the market. They don't have to build a workbench around their tool and can concentrate their effort on the development of their core features.

  • The consistent UI among the different Eclipse tools reduces the learning curve for users.

One of the reasons for the success of the Eclipse platform is the performance of its user interface compared to other Java applications. This level of performance was reached thanks to the Standard Widget Toolkit (SWT), a widget library that was developed as an alternative to Swing. SWT allows you to build cross-platform user interfaces that are as rich as Swing UIs and that perform as well as native UIs.

Although programmers who try SWT tend to be very enthusiastic about it, this toolkit does have a drawback: SWT is not compatible with AWT (the Abstract Window Toolkit) and Swing. Mixing SWT and AWT panels in the same application can, in the worst case, cause the JVM to crash on some platforms. Thus, if you want to deliver an existing Swing tool as an Eclipse plugin, you need to rewrite its UI with SWT. This task can be very tedious for complex UIs.

Considering the number of tools on the market that currently use a Swing UI, a bridge technology or method that would allow developers to port an existing application from Swing to SWT with a minimum of change would be in great demand. This is always a very hot topic in the discussion forums about Eclipse and SWT.

The purpose of this tutorial is to introduce a methodology for such a migration. The techniques presented here won't allow you to automatically port an existing application without any code modification, but they will show you how to do a manual migration of the Swing code with very few changes to the original code.

We will begin with a study of the main differences between AWT/Swing and SWT. We'll then examine migration techniques that can be used to successfully port Swing code to SWT with a minimum of change, and we'll compare each Swing component with its SWT equivalent in detail, and discuss the problems you might encounter in porting. Finally, we'll work through a concrete example where a Swing dialog is ported to SWT using the techniques we've presented.

This tutorial includes sample code applying the described methods on the standard components of the Swing library. You are free to use and modify this code in your own projects.


Should I take this tutorial?

Before you take this tutorial, you should have a good knowledge of the Swing API, as well as a basic knowledge of SWT. This tutorial was written for people who want to migrate a Swing application to SWT, or for Swing programmers who want to know which features available in Swing are also available in SWT, and what limitations they should expect. For this reason, this tutorial uses a lot of terms and comparisons that are relevant specifically to Swing development. It mainly focuses on how features available in Swing can be programmed in SWT, not on features that are available in SWT but not in Swing.

This tutorial is neither an introduction to UI programming, nor an introduction to SWT. If you need an introduction to SWT, you will find relevant links in Resources that you should read before taking this tutorial.

To complete this tutorial, you will need to install Eclipse, which includes the SWT packages. You may also wish to review the SWT development resources.

Note that this tutorial is very comprehensive and will require significant time to complete. However, it serves as excellent reference material. I recommend you download the PDF after you complete the tutorial for offline viewing.

1 of 10 | Next

Comments



Help: Update or add to My dW interests

What's this?

This little timesaver lets you update your My developerWorks profile with just one click! The general subject of this content (AIX and UNIX, Information Management, Lotus, Rational, Tivoli, WebSphere, Java, Linux, Open source, SOA and Web services, Web development, or XML) will be added to the interests section of your profile, if it's not there already. You only need to be logged in to My developerWorks.

And what's the point of adding your interests to your profile? That's how you find other users with the same interests as yours, and see what they're reading and contributing to the community. Your interests also help us recommend relevant developerWorks content to you.

View your My developerWorks profile

Return from help

Help: Remove from My dW interests

What's this?

Removing this interest does not alter your profile, but rather removes this piece of content from a list of all content for which you've indicated interest. In a future enhancement to My developerWorks, you'll be able to see a record of that content.

View your My developerWorks profile

Return from help

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=Java technology
ArticleID=132351
TutorialTitle=Migrate your Swing application to SWT
publish-date=01192004
author1-email=ysaillet@de.ibm.com
author1-email-cc=

Tags

Help
Use the search field to find all types of content in My developerWorks with that tag.

Use the slider bar to see more or fewer tags.

Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere).

My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Use the search field to find all types of content in My developerWorks with that tag. Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).