Online Training Spring Hibernate Training in Delhi R Programming Training Course Big Data and Hadoop Training Java Training

Create Progress Bar in SWT

SWT allows to create a Progress bar by providing the class ProgressBar of package org.eclipse.swt.widgets. With the use of this class, you can display the progress in the form of bar.

Ads

Create Progress Bar in SWT

     

This section illustrates you how to create a Progress Bar.

SWT allows to create a Progress bar by providing the class ProgressBar of package org.eclipse.swt.widgets. With the use of this class, you can display the progress in the form of bar. The method setMinimum() sets the minimum value and the method setMaximum() sets the maximum value for the progress bar. The method setSelection() sets the selection. 

The method getSystemColor() returns the defined standard color of class Shell. The method fontMetrics.getAverageCharWidth() returns the average character width in pixels, of the default font and the method fontMetrics.getHeight() returns the height of the default font in pixels. The method gc.getFontMetrics returns the font metrics to draw the string.

Following code draws the string on the bar

e.gc.drawString(string, (point.x-width)/2 , (point.y-height)/2, true);

Here is the code of ProgressBarExample.java

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.graphics.*;

public class ProgressBarExample {
  Display display = new Display();
  Shell shell = new Shell(display);
  Button button;
  ProgressBar progressBar;
  
  public ProgressBarExample() {
  GridLayout gridLayout = new GridLayout(1true);
  shell.setLayout(gridLayout);
  shell.setText("Progress Bar");
  button = new Button(shell, SWT.HORIZONTAL);
  button.setText("Start"); 
  progressBar = new ProgressBar(shell, SWT.SMOOTH);
  progressBar.setMinimum(0);
  progressBar.setMaximum(10);
  
  final Thread thread = new Thread(){
  public void run() {
  for(int i=0; i<=10; i++) {
 final int value = i;
  try {
  Thread.sleep(800);
  catch (Exception e) { }
  shell.getDisplay().asyncExec(new Runnable(){
  public void run() {
  progressBar.setSelection(value);
 }
  });
  }
  }
  };
  button.addListener(SWT.Selection, new Listener() {
  public void handleEvent(Event event) {
  button.setEnabled(false);
  thread.start();
  }
  });
  progressBar.addPaintListener(new PaintListener() {
  public void paintControl(PaintEvent e) {
  String string = 
   (progressBar.getSelection() * 
1.0 /
  (progressBar.getMaximum()-progressBar.getMinimum()) * 100)
   + 
"%";
  Point point = progressBar.getSize();
  
  FontMetrics fontMetrics = e.gc.getFontMetrics();
  int width = 
   fontMetrics.getAverageCharWidth() * string.length();

  int height = fontMetrics.getHeight();
  e.gc.setForeground
 (shell.getDisplay().getSystemColor(SWT.COLOR_WHITE));

  e.gc.drawString
   (string, (point.x-width)/
, (point.y-height)/2true);
  }
  });
  progressBar.setLayoutData
   (
new GridData(GridData.FILL_HORIZONTAL));
    shell.setSize(30090);
    shell.open();  
  while (!shell.isDisposed()) {
  if (!display.readAndDispatch()) {
  display.sleep();
  }
  }
  display.dispose();
  }
  public static void main(String[] args) {
  new ProgressBarExample();
  }
}

Output will be displayed as:

Download Source Code

     

Advertisements

Online Training Classes

Share on Google+Share on Google+

Create Progress Bar in SWT

Posted on: October 3, 2008 If you enjoyed this post then why not add us on Google+? Add us to your Circles

Advertisements

 

Discuss: Create Progress Bar in SWT   View All Comments

Post your Comment


Your Name (*) :
Your Email :
Subject (*):
Your Comment (*):
  Reload Image
 
 
Comments:0

Ads

 

Ads