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 Class | Swing/AWT Class |
|---|---|
| GLabel | JLabel |
| GTextField | JTextField |
| GButton | JButton |
| GRadioButton | JRadioButton |
| GButtonGroup | ButtonGroup |
| GCheckBox | JCheckBox |
| GComboBox | JComboBox |
| GFrame | JFrame |
| GDialog | JDialog |
| GTable | JTable |
| GTree | JTree |
| GMenuBar | JMenuBar |
| GToolBar | JToolBar |
| GPopupMenu | JPopupMenu |
| GTabbedPane | JTabbedPane |
| GBorderLayout | BorderLayout |
| GGridLayout | GridLayout |
| GActionListener | ActionListener |
| GActionEvent | ActionEvent |
| GMouseListener | MouseListener |
| GMouseEvent | MouseEvent |
| GDimension | Dimension |
| GPoint | Point |
| GBorderFactory | BorderFactory |
| GLineBorder | LineBorder |
| GEtchedBorder | EtchedBorder |
| 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();
}


