SDA SE Wiki

Software Engineering for Smart Data Analytics & Smart Data Analytics for Software Engineering

User Tools

Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

research:jtransformer:eventprocessingthread [2018/05/09 01:59] (current)
Line 1: Line 1:
  
 +  * 1 zu 1 beziehung zu Display instanz
 +  * letztere ist praktisch nichts anderes (zumindest nicht viel :-) ) als der EPT
 +  * in nahezu allen Fällen genau 1 Display/EPT
 +  * details in arbeit.
 +
 +----
 +
 +Die ''​main''​-Methode einer typischen SWT Applikation sieht z.B. so aus <​Code>​
 +  /**
 +   * Invokes as a standalone program.
 +   */
 +  public static void main(String[] args) {
 +    Display display = new Display();
 +    Shell shell = new Shell(display);​
 +    shell.setLayout(new FillLayout());​
 +    ControlExample instance = new ControlExample(shell);​
 +    shell.setText(getResourceString("​window.title"​));​
 +    setShellSize(display,​ shell);
 +    shell.open();​
 +    while (! shell.isDisposed()) {
 +       if (! display.readAndDispatch()) display.sleep();​
 +    }
 +    instance.dispose();​
 +  }</​Code>//​(schamlos entwendet aus den Eclipse SDK Beispielen, die ihr hier findet: [[http://​www.eclipse.org/​downloads|http://​www.eclipse.org/​downloads]])//​
 +=== Bemerkenswert im Gegensatz zu einer Swing/awt Applikation: ​  ===
 +
 +Das Dispatching der Events geschieht (mehr oder weniger) explizit und in aller Öffentlichkeit. Die ''​while''​-Schleife im obigen Beispiel **ist** der Event Loop. Was die Methode ''​Display.readAndDispatch()''​ im Großen&​Ganzen macht, wollen wir uns im folgenden ansehen.\\ \\ 
 +Nehmen wir der Einfachheit halber an, das Windowing-System (also Windows,X11 etc) stellt unserer Applikation einen fifo bereit, in den es alle möglichen Events schreibt, um uns über Benutzerinteraktionen wie Mousebewegungen,​ Tastatureingaben,​ etc auf dem Laufenden zu halten. Auf der anderen Seite sitzt unsere Applikation und ließt diese Events. Das sieht in etwa so aus:<​Code>​
 +public boolean readAndDispatch(){
 +  //try to read exactly one event from the fifo
 +  //​IMPORTANT:​ this method blocks until one event is 
 +  //read!
 +  Event ev = readOneEvent(windowSystemFifo);​
 +
 +  //Dispatch event to top-level Widgets and/or other low-level
 +  //event listeners that have registered with this Display instance
 +  dispatchEvent(ev);​
 +
 +  //Return true   if there are events left in the fifo, 
 +  //       ​false ​ if the fifo is empty
 +  return windowSystemFifo.hashMoreData();​
 +}</​Code>//​den Code habe ich mir natürlich ausgedacht! Die eine oder andere Sache fehlt vermutlich.//​
research/jtransformer/eventprocessingthread.txt · Last modified: 2018/05/09 01:59 (external edit)

SEWiki, © 2019