Modernisation de Swing
Du Swing au Web, Un écran à la fois
Votre application Swing, JavaFX ou SWT s’exécute dans un navigateur web sans modifier son code source. Vous créez ensuite de nouveaux écrans avec webforJ et remplacez les anciens à votre rythme. L’équipe Java et le code restent en place.
- Bibliothèques d’interface de bureau : Swing, JavaFX et SWT
- 3
- Modifications du code source pour l’exécution dans un navigateur
- 0
- ClientsSwing
- CommandeswebforJ
- RapportsSwing
Ce qui reste inchangé
Uniquement les écrans Modifier
webforJ est le framework Java full-stack dédié aux applications web métier : vous créez toute l’application, écrans compris, en Java. Migrer une application Swing revient donc à migrer ses écrans, et tout ce qui les sous-tend est conservé.
Quels changements ?
Les écrans. Vous les déplacez un par un, selon l’ordre qui compte pour votre activité, tandis que le reste de l’application Swing continue de fonctionner dans le même onglet du navigateur.
- 01
L’équipe
Les personnes qui maintiennent aujourd’hui l’application Swing créent les interfaces web en Java. Pas besoin d’une deuxième équipe ni d’apprendre une chaîne d’outils front-end.
- 02
Le code
Webswing exécute l’application telle quelle. Le même code continue de fonctionner comme application de bureau et dans le navigateur : vous ne maintenez qu’une seule application, pas deux.
- 03
La logique
Les classes de domaine, les services et les règles de validation sans rapport avec
javax.swingsont appelés directement depuis les nouveaux écrans. Ils ne deviennent pas d’abord des points de terminaison. - 04
La chaîne d’outils
Maven, votre IDE, votre débogueur et vos tests existants continuent de s’appliquer.
Le déplacement en trois phases
Suivre le déplacement pas à pas Du bureau au web
Chaque phase apporte un élément visible par les utilisateurs. Choisissez une phase pour voir l’écran correspondant et le code qui le fait fonctionner.
Lancer l’application de bureau dans le navigateur
Webswing exécute votre application Swing, JavaFX ou SWT sur le serveur et diffuse son interface dans le navigateur sous forme de canevas HTML5. Les entrées de la souris et du clavier sont transmises à l’application réelle. Le code source reste inchangé.
Intégrez-le dans une vue webforJ avec WebswingConnector. Le connecteur se connecte au serveur Webswing lorsqu’il est ajouté à la page.
@Route
public class SwingAppView extends Composite<Div> {
private final Div self = getBoundComponent();
private WebswingConnector connector;
public SwingAppView() {
// Initialize the connector with your Webswing application URL
connector = new WebswingConnector("http://localhost:8080/myapp/");
// Set the display dimensions
connector.setSize("100%", "600px");
// Add to the view container
self.add(connector);
}
}
Phase 1 sur 3
Communication bidirectionnelle
Anciens et nouveaux écrans Parler entre eux
Un message est une action : un nom, une charge utile textuelle facultative et une charge utile binaire facultative. Le nom est libre. Les deux extrémités étant en Java pur, personne n’a besoin d’écrire de script pour le navigateur.
- 1
Swing annonce
Un double-clic envoie
select-customeravec la ligne au format JSON. Sur ordinateur, le même clic ouvre toujours la boîte de dialogue Swing.Application.java (Swing)private void handleDoubleClick(MouseEvent e) {int row = table.rowAtPoint(e.getPoint());if (row >= 0 && row < customers.size()) {Customer customer = customers.get(row);if (isWebswing) {api.sendActionEvent("select-customer", gson.toJson(customer), null);} else {showEditDialog(customer);}}}CustomerBridgeView.java (webforJ)connector.onAction(e -> {switch (e.getActionName()) {case "select-customer" -> e.getActionData().ifPresent(this::openEditor);case "export-ready" -> e.getActionBinaryData().ifPresent(d -> status.setText("Got " + d.length() + " characters"));default -> { }}}); - 2
Réponses de webforJ
Lors de l’enregistrement, le formulaire web renvoie
update-customeret l’application Swing actualise son tableau. Aucun des deux ne fait appel aux mécanismes internes de l’autre.Application.java (Swing)private void setupWebswingListeners() {api.addBrowserActionListener(event -> {if ("update-customer".equals(event.getActionName())) {Customer updated = gson.fromJson(event.getData(), Customer.class);updateCustomer(updated);}});}CustomerTableView.java (webforJ)dialog.onSave(() -> {// Send updated customer back to Swingconnector.performAction("update-customer", gson.toJson(customer));});
Envoyer des commandes à Swing
performAction() envoie un nom seul ou accompagné de données. L’application Swing détermine la signification de chaque nom.
// Trigger a refresh in the Swing application from webforJ
connector.performAction("refresh");
// Send a command with data from webforJ
connector.performAction("selectRecord", "12345");
Savoir quand Swing est prêt
onInitialize est appelé lorsque la connexion est prête. onStart est appelé lorsque l’application Swing est entièrement chargée. Envoyez votre première action depuis onStart.
connector.onInitialize(e -> status.setText("Connected"));
connector.onStart(e -> status.setText("Swing app running"));
Porter avec un assistant IA
Laissez un assistant le porter, écran par écran
Passer d’un écran à l’autre est une tâche répétitive, idéale pour un assistant de programmation IA. Le plug-in IA webforJ le connecte au serveur MCP webforJ et aux Agent Skills, des workflows structurés qui lui indiquent quand utiliser ces outils, dans quel ordre et comment valider le résultat.
- 1
Donnez-lui un écran Swing.
Demandez l’équivalent webforJ qui appelle vos services existants.
- 2
Cela vérifie l’API réelle.
Le serveur MCP consulte à la demande la documentation et les détails de l’API de webforJ, plutôt que de deviner.
- 3
Vous relisez et testez
Comparez le comportement avec la version Swing d’origine, puis passez à l’écran suivant.
Comment démarrer
À partir d’un fichier JAR vers une page dans le navigateur
Vous avez besoin d’une application Swing, JavaFX ou SWT empaquetée dans un fichier JAR, du serveur Webswing et de webforJ 25.10 ou version ultérieure.
- 1
Télécharger et lancer Webswing
Téléchargez Webswing, extrayez l’archive, puis démarrez le serveur avec le script correspondant à votre plateforme. Il est accessible à l’adresse
http://localhost:8080.
webswing.sh - 2
Enregistrez votre application
Dans la console d’administration de
http://localhost:8080/admin, définissez le nom de l’application, la classe principale, le classpath, les arguments JVM et le répertoire de base. L’application est ensuite accessible à l’adressehttp://localhost:8080/[app-name]/.- CORS
- Ajoutez l’origine de votre application webforJ aux origines autorisées, par exemple
http://localhost:8090. - Ports
- Les deux utilisent généralement le port 8080. Modifiez-en un pour éviter tout conflit.
- 3
Ajouter la dépendance
Le module webforj-webswing fournit WebswingConnector et les classes associées.
<dependency><groupId>com.webforj</groupId><artifactId>webforj-webswing</artifactId><version>${webforj.version}</version></dependency> - 4
Intégrer et configurer
Ajoutez un WebswingConnector à une vue, comme lors de la phase 1. WebswingOptions modifie son comportement, par exemple en masquant le bouton de déconnexion lorsque votre application webforJ gère la connexion.
WebswingConnector connector = new WebswingConnector("http://localhost:8080/myapp/");WebswingOptions options = new WebswingOptions().setDisableLogout(true); // Hide the logout buttonconnector.setOptions(options);
Choisissez votre Premier écran
Commencez par une simple liste et un formulaire de modification. Intégrez l’application, migrez cet écran vers webforJ et voyez comment il fonctionne aux côtés du reste.
- Présentation de WebswingCe que Webswing résout et comment les trois couches fonctionnent ensemble.
- Installation et configurationInstallation du serveur, console d’administration, CORS et options du connecteur.
- CommunicationToutes les actions et tous les événements entre webforJ et l’application Swing.
- Tutoriel de modernisationUne table de clients Swing intégrée et dotée d’une boîte de dialogue de modification webforJ.
- Extension IA webforJLe serveur MCP et les compétences d’agent pour votre assistant de programmation.
- Accueil de la documentationTout le reste de webforJ, du premier projet aux composants.