Я только что скачал Eclipse и делал урок HelloWorldSWT, чтобы познакомиться с IDE.
Программа работает, но в отличие от отображения display.sleep () в главном цикле, программа продолжает загружать циклы ЦП.Это нормально для этого урока?и как я могу предотвратить это?
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class HelloWorldSWT {
/**
* @param args
*/
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Hello world!");
shell.open();
while(!shell.isDisposed()){
display.sleep();
}
display.dispose();
shell.close();
}
}
Редактировать: я обнаружил, что
if (!display.readAndDispatch()) {display.sleep();}
решает проблему.Однако я до сих пор не понимаю разницы между проверкой несуществующих событий и последующим переводом дисплея в спящий режим и просто переводом дисплея в спящий режим, который мог бы вызвать эту проблему.