I am trying to use both the progress bar and the label to show the progress of a discreet number of operations. Each time I update both options, the shortcut is updated immediately, and the progress bar has a noticeable delay before it changes .
I have a test dialog where, when I click the button, I update both the label and the progress bar to reflect an increase of 1. This happens immediately in the code without any loops or threads being called ( fixing any problems related with threads as a reason ) - a simple change in values. When this happens, the shortcut is updated immediately, and the progress bar waits about half a second before a visual update. This leads to examples where he will say, for example, β2 of 3β when he briefly but noticeably shows 1/3 of the filled bar.

import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.ProgressBar; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; public class ProgressBarTest extends Shell { private ProgressBar progressBar; private Label lblXOfX; private Button btnGo; public static void main(String args[]) { try { Display display = Display.getDefault(); ProgressBarTest shell = new ProgressBarTest(display); shell.open(); shell.layout(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } } catch (Exception e) { e.printStackTrace(); } } public ProgressBarTest(Display display) { super(display, SWT.SHELL_TRIM); createContents(); } protected void createContents() { setText("SWT Application"); setSize(450, 300); setLayout(new GridLayout()); progressBar = new ProgressBar(this, SWT.NONE); progressBar.setMaximum(3); progressBar.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); lblXOfX = new Label(this, SWT.NONE); lblXOfX.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); lblXOfX.setText("x of x"); btnGo = new Button(this, SWT.NONE); btnGo.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent arg0) { go(); } }); btnGo.setText("Go"); } @Override protected void checkSubclass() {
This happens despite using the internal Progress Bar variable to track the value and use that value to update the label.
It is noteworthy that changing the progress bar "Status" to "ERROR" or "PAUSED" fixes the problem.
Is this some kind of animation bug? Is this just a problem with a specific version of Windows , such as the Windows 7 that I am using? Or is it something else?
java windows swt progress-bar
Southpaw hare
source share