2.2.5. Der Swing Starter

Um die Applikation mit Swing zu starten, betrachten wir das Modul org.jowidgets.helloworld.starter.swing und dort zunächst das folgende pom.xml.

  1  <project 
  2      xmlns="http://maven.apache.org/POM/4.0.0" 
  3      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
  5      http://maven.apache.org/xsd/maven-4.0.0.xsd">
  6      <modelVersion>4.0.0</modelVersion>
  7  
  8      <artifactId>org.jowidgets.helloworld.starter.swing</artifactId>
  9  
 10      <parent>
 11          <groupId>org.jowidgets.helloworld</groupId>
 12          <artifactId>org.jowidgets.helloworld.parent</artifactId>
 13          <version>0.0.1-SNAPSHOT</version>
 14          <relativePath>../parent/pom.xml</relativePath>
 15      </parent>
 16      
 17      <dependencies>
 18  
 19          <!-- The ui technology independend hello world module -->
 20          <dependency>
 21              <groupId>org.jowidgets.helloworld</groupId>
 22              <artifactId>org.jowidgets.helloworld.common</artifactId>
 23              <version>0.0.1-SNAPSHOT</version>
 24          </dependency>
 25  
 26          <!-- The default implementation of the jowidgets api -->
 27          <dependency>
 28              <groupId>org.jowidgets</groupId>
 29              <artifactId>org.jowidgets.impl</artifactId>
 30              <version>${jowidgets.version}</version>
 31          </dependency>
 32  
 33          <!-- The Swing implementation of the jowidgets spi -->
 34          <dependency>
 35              <groupId>org.jowidgets</groupId>
 36              <artifactId>org.jowidgets.spi.impl.swing</artifactId>
 37              <version>${jowidgets.version}</version>
 38          </dependency>
 39  
 40      </dependencies>
 41  
 42  </project>

Ab Zeile 20 wird das common Modul der HelloWorld Applikation hinzugefügt. Ab Zeile 27 folgt die Defaultimplementierung der jowidgtes API und ab Zeile 34 wird die SPI Implementierung für Swing hinzugefügt.

Dadurch ergeben sich die folgenden (jowidgets internen) transienten Modulabhängigkeiten:

org.jowidgets.spi.impl.common

Gemeinsamer Code der von allen SPI Implementierungen genutzt wird.

org.jowidgets.spi.impl.swing.common

Die Swing SPI Implementierung.

org.jowidgets.spi.impl.swing

Die Swing SPI Implementierung als ServiceLoader Plugin

Die Swing SPI Implementierung hat zudem eine externe Abhängigkeit auf MigLayout für Swing.

Die Klasse HelloWorldStarterSwing ist für das Starten der Applikation zuständig.

  1  package org.jowidgets.helloworld.starter.swing;
  2  
  3  import javax.swing.UIManager;
  4  
  5  import org.jowidgets.api.toolkit.Toolkit;
  6  import org.jowidgets.helloworld.common.HelloWorldApplication;
  7  
  8  public final class HelloWorldStarterSwing {
  9  
 10      private HelloWorldStarterSwing() {}
 11  
 12      public static void main(final String[] args) throws Exception {
 13          UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
 14          System.setProperty("apple.laf.useScreenMenuBar", "true");
 15          Toolkit.getApplicationRunner().run(new HelloWorldApplication());
 16          System.exit(0);
 17      }
 18  }

In Zeile 13 wird das System System Look and Feel für Swing gesetzt, Zeile 14 enthält eine iOS spezifische Property um Menüs Apple typisch anzuzeigen. Um die HelloWorldApplication, welche IApplication implementiert, zu starten, wird ein IApplicationRunner benötigt. Dieser kann vom Jowidgets Toolkit geholt werden. In Zeile 15 wird so die Applikation gestartet. Der Aufruf blockiert, bis die IApplication Implementierung auf dem übergebenen IApplicationLifecycle Object die Methode finish() aufruft. Anschließend wird die VM beendet.

Die folgende Abbildung zeigt das Hello World Fenster für die Swing SPI Implementierung:

Abbildung 5. Hello World Swing

Hello World Swing


Siehe auch PDF Version dieses Dokuments, Jowidgets API Spezifikation