Probleme mit SWT unter Linux?

schuhmann

Grünschnabel
Ich probiere zum ersten Mal SWT unter Linux und es scheint Unterschiede zum Windows zu geben. Ich versuche ein ganz einfaches Label zu verändern:

package main;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

public class SWTtest {

public static Display display = new Display();
public static Shell shell = new Shell(display,SWT.SHELL_TRIM);

public static void main(String[] args) throws Exception {

shell.setSize(300,225);

Label label = new Label(shell,SWT.LEFT);
label.setSize(53, 26);
label.setText("vor");
label.setLocation(100,2);

shell.open ();

Thread.sleep(500);
label.setText("mitte");
Thread.sleep(500);
label.setText("nach");

while (!shell.isDisposed ())
if (!display.readAndDispatch ())
display.sleep ();
display.dispose ();
}
}
Unter Windows funktioniert es hervorragend. Unter Linux wird nur "vor" und "nach" angezeigt. Kann mir da jemand helfen?

Vielen Dank...
 
Das dürfte unter Windows auch nicht anders sein. Mit Thread.sleep legst du den aktuellen Thread schlafen. In deinem Fall ist das der SWT Thread der dafür zuständig ist die GUI zu aktualisieren. Die aktualsierung des Labels auf mitte hat also während des schlafens nunmal keine Chance durchgeführt zu werden.
 
Aber Thread.sleep(500) legt doch den aktuellen Thread nur für 500ms lahm und fährt dann mit der nächsten Anweisung fort.
Aber wie schon gesagt, unter Windows funktioniert es prächtig.

Inzwischen habe ich Thread.sleep durch eine kleine Schleife ersetzt:

for(int i = 0; i <= 50000; i++){
label.setText(":" + i);
}

Hier ist es das Gleiche. Unter Windows funktioniert es, der Zähler "rast" durch. Unter Linux wird nur "vor" und dann gleicht ":50000" angezeigt.
 
Zurück