Проблемы во время выполнения с HelloWorldSWT Eclipse - PullRequest
0 голосов
/ 03 сентября 2011

Я только что скачал 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();}

решает проблему.Однако я до сих пор не понимаю разницы между проверкой несуществующих событий и последующим переводом дисплея в спящий режим и просто переводом дисплея в спящий режим, который мог бы вызвать эту проблему.

Ответы [ 2 ]

2 голосов
/ 03 сентября 2011

Вам нужно позвонить display.readAndDispatch(), чтобы прочитать события из очереди событий и воздействовать на них (отправка).

Даже событие деактивации из Shell должно быть отправлено!

Все приложения на базе SWT имеют цикл событий, который вы добавили в свое сообщение.Посмотрите на SWT Snippets для большего количества примеров.

1 голос
/ 11 июля 2012

Это как вы создаете проект, который вызывает это.Правильные отношения должны быть применены в начале с установленными зависимостями и установленными библиотеками.

Я все заработал, затем поиграл с этим, чтобы увидеть, что было основной причиной, так как есть много блогов с различными советами, которые работалис некоторыми людьми, а не с другими.

Главное, это необходимо

import org.eclips.swt.widget.Display
import org.eclips.swt.widget.Screen
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...