Erste Schritte

Einstellen der Entwicklungsumgebung

Unabhängig von GWT oder TeaVM sollte die gwtswing.css in die index.html aufgenommen werden, um eine konsistente Darstellung der UI Elemente zu gewährleisten.

Für GWT

Im ersten Schritt müssen GWTSwing, sowie die gplatform APIs zum Classpath der GWT Anwendung hinzugefügt werden. Danach kann GWTSwing wie jedes andere GWT Modul durch folgende Einträge in der eigenen *.gwt.xml Datei hinzugefügt werden.

    <inherits name='de.exware.gplatform' />
    <inherits name='de.exware.gwtswing' />

In der index.html Datei wird die css Datei so ergänzt:

    <link type="text/css" rel="stylesheet" href="YOUR_GWT_PROJECTNAME/de/exware/gwtswing/gwtswing.css"/>

Für TeaVM

Fügen Sie die Abhängigkeiten in Ihre pom.xml ein. In der index.html Datei wird die css Datei so ergänzt:

    <link href="./de/exware/gwtswing/gwtswing.css" rel="stylesheet"/>

Erstes Beipiel - Ein einfacher Popup Dialog

In normalen Swing Applikationen können standard Dialoge mit der Klasse JOptionPane erzeugt und angezeigt werden. Das gleiche kann in GWTSwing mit der Klasse GOptionPane getan werden. Hier ein Beispiel:

Swing Version

    JOptionPane.showMessageDialog(null, "Hello World");
Das Ergebnis ist ein Dialog wie dieser:

GWTSwing Version

	GOptionPane.showMessageDialog(null, "Hello World");
Das Ergebnis ist ein Dialog wie dieser:

Einfache UI Elemente verwenden

Die meisten Standard UI Elemente aus Swing wie z.B. Labels, Buttons, Checkboxes, Radiobuttons usw. können in GWTSwing genauso verwendet werden, wie dies in Swing möglich ist. Es wird einfach nur die GWTSwing Version der Klasse verwendet. Hier ist eine (unvollständige) Liste einiger verfügbarer Klassen und deren Swing gegenstücke.
GWTSwing ClassSwing/AWT Class
GLabelJLabel
GTextFieldJTextField
GButtonJButton
GRadioButtonJRadioButton
GButtonGroupButtonGroup
GCheckBoxJCheckBox
GComboBoxJComboBox
GFrameJFrame
GDialogJDialog
GTableJTable
GTreeJTree
GMenuBarJMenuBar
GToolBarJToolBar
GPopupMenuJPopupMenu
GTabbedPaneJTabbedPane
GBorderLayoutBorderLayout
GGridLayoutGridLayout
GActionListenerActionListener
GActionEventActionEvent
GMouseListenerMouseListener
GMouseEventMouseEvent
GDimensionDimension
GPointPoint
GBorderFactoryBorderFactory
GLineBorderLineBorder
GEtchedBorderEtchedBorder
G......

Portierung bestehender Swing Anwendungen

Als Grundregel gilt, das alle vorkommen von Swing Klassen wie JLabel, JButton, JPanel usw. durch Ihre GWTSwing Versionen GLabel, GButton, GPanel usw. ersetzt werden müssen.

Wir haben alle verfügbaren Swing and AWT Klassen mit einem großen 'G' als Prefix versehen, um doppelte Klassennamen in der Autovervollständigung Ihrer IDE zu vermeiden. Dies gilt insbesondere auch für Event und Listener Klassen wie ActionEvent und ActionListener welche durch GActionEvent and GActionListener ersetzt werden.

Dialog portieren

In GWTSwing gibt es keine modalen Dialoge. Daher müssen Anwendungen an den Stellen geändert werden, an denen Modale Dialoge verwendet werden. Dies geschieht indem der Code, der nach dem schließen eines modalen Dialogs ausgeführt wird, in die execute Methode einer Instanz von GDialogCallback verschoben wird.

Swing Version

	public void actionPerformed(ActionEvent evt)
	{
		JDialog dlg = new JDialog(window, true);
		dlg.pack();
		dlg.show();
		//MY POST DIALOG CODE GOES HERE
		//...
	}

GWTSwing Version

	public void actionPerformed(GActionEvent evt)
	{
		GDialogCallback callback = new GDialogCallback()
		{
			@Override
			public void execute()
			{
				//MY POST DIALOG CODE GOES HERE
				//...
			}
		};
		GDialog dlg = new GDialog(callback);
		dlg.pack();
		dlg.show();
	}