Swingin modernisointi
Swingistä verkkoon, Yksi näyttö kerrallaan
Swing-, JavaFX- tai SWT-sovelluksesi toimii selaimessa ilman lähdekoodin muutoksia. Rakenna sitten uusia näkymiä webforJ:llä ja korvaa vanhat omaan tahtiisi. Java-tiimi ja koodi säilyvät.
- Työpöytäkäyttöliittymäkirjastot: Swing, JavaFX ja SWT
- 3
- Lähdekoodimuutokset selaimessa suoritettaviksi
- 0
- AsiakkaatSwing
- TilauksetwebforJ
- RaportitSwing
Mikä pysyy samana
Vain näytöt Muuta
webforJ on täyden pinon Java-kehys yritysten verkkosovelluksille: rakennat koko sovelluksen näkymineen Java-kielellä. Swing-sovelluksen siirtäminen tarkoittaa siis sen näkymien siirtämistä, jolloin kaikki niiden alla oleva siirtyy mukana.
Mitä muutoksia
Näytöt. Siirrät niitä yksi kerrallaan liiketoimintasi kannalta tärkeässä järjestyksessä, samalla kun muu Swing-sovellus jatkaa toimintaansa samassa selaimen välilehdessä.
- 01
Tiimi
Swing-sovellusta nykyään ylläpitävät kehittäjät rakentavat verkkonäkymät Javalla. Erillistä tiimiä tai opeteltavaa front-end-työkaluketjua ei ole.
- 02
Koodi
Webswing ajaa sovellusta sellaisenaan. Sama koodikanta toimii sekä työpöytäsovelluksena että selaimessa, joten ylläpidät yhtä sovellusta kahden sijaan.
- 03
Logiikka
Domain-luokkia, palveluita ja validointisääntöjä, joilla ei ole mitään tekemistä
javax.swing:n kanssa, kutsutaan suoraan uusista näytöistä. Niistä ei ensin tehdä päätepisteitä. - 04
Työkaluketju
Maven, IDE:si, debuggerisi ja nykyiset testisi ovat edelleen käytössä.
Siirto kolmessa vaiheessa
Etene siirto vaiheittain Työpöydältä verkkoon
Jokaisessa vaiheessa syntyy jotain käyttäjille näkyvää. Valitse vaihe nähdäksesi sen aikaisen näkymän ja koodin, jolla se toimii.
Suorita työpöytäsovellus selaimessa
Webswing suorittaa Swing-, JavaFX- tai SWT-sovelluksesi palvelimella ja välittää sen käyttöliittymän selaimeen HTML5-canvasina. Hiiri- ja näppäimistösyötteet välittyvät takaisin varsinaiseen sovellukseen. Lähdekoodia ei tarvitse muuttaa.
Upota se webforJ-näkymään WebswingConnectorilla. Yhdistin muodostaa yhteyden Webswing-palvelimeen, kun se lisätään sivulle.
@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);
}
}
Vaihe 1/3
Kaksisuuntainen viestintä
Vanhat ja uudet näytöt Keskustele keskenään
Viesti on toiminto: sillä on itse keksimäsi nimi, valinnainen merkkijonosisältö ja valinnainen binäärisisältö. Kummassakin päässä käytetään tavallista Javaa, joten viestinvaihtoa varten ei tarvitse kirjoittaa selainkoodia.
- 1
Swing ilmoittaa
Kaksoisnapsautus lähettää rivin JSON-muodossa toiminnolle
select-customer. Työpöytäsovelluksessa sama napsautus avaa edelleen Swing-valintaikkunan.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
webforJ-vastaukset
Tallennettaessa verkkolomake lähettää
update-customer-arvon takaisin, ja Swing-sovellus päivittää taulukkonsa. Kumpikaan osapuoli ei kutsu toisen sisäisiä toimintoja.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));});
Lähetä komentoja Swingiin
performAction() lähettää joko pelkän nimen tai nimen ja dataa. Swing-sovellus päättää, mitä kukin nimi tarkoittaa.
// Trigger a refresh in the Swing application from webforJ
connector.performAction("refresh");
// Send a command with data from webforJ
connector.performAction("selectRecord", "12345");
Tiedä, milloin Swing on valmis.
onInitialize suoritetaan, kun yhteys on valmis. onStart suoritetaan, kun Swing-sovellus on latautunut kokonaan. Lähetä ensimmäinen toimintosi onStartista.
connector.onInitialize(e -> status.setText("Connected"));
connector.onStart(e -> status.setText("Swing app running"));
Siirrä tekoälyavustajan avulla
Anna avustajan siirtää se, Näyttö kerrallaan
Näytöltä toiselle eteneminen on toistuvaa työtä, joten se sopii tekoälykoodausavustajalle. webforJ AI -laajennus yhdistää sen webforJ MCP -palvelimeen ja Agent Skills -toimintoihin eli jäsenneltyihin työnkulkuihin, jotka kertovat, milloin työkaluja käytetään, missä järjestyksessä ja miten tulos tarkistetaan.
- 1
Anna sille yksi Swing-näyttö
Pyydä webforJ-vastinetta, joka kutsuu olemassa olevia palveluitasi.
- 2
Se tarkistaa todellisen API:n.
MCP-palvelin hakee webforJ-dokumentaatiota ja API-tietoja tarpeen mukaan arvailun sijaan.
- 3
Tarkistat ja testaat
Vertaa toimintaa Swing-alkuperäiseen versioon ja siirry sitten seuraavaan näyttöön.
Näin pääset alkuun
JAR-tiedostosta selaimessa olevalle sivulle
Tarvitset JAR-tiedostoksi pakatun Swing-, JavaFX- tai SWT-sovelluksen, Webswing-palvelimen sekä webforJ-version 25.10 tai uudemman.
- 1
Lataa ja käynnistä Webswing
Lataa Webswing, pura arkisto ja käynnistä palvelin alustallesi tarkoitetulla komentosarjalla. Palvelin on käytettävissä osoitteessa
http://localhost:8080.
webswing.sh - 2
Rekisteröi sovelluksesi
Aseta hallintakonsolissa kohdassa
http://localhost:8080/adminsovelluksen nimi, pääluokka, luokkapolku, JVM-argumentit ja kotihakemisto. Sovellus on tämän jälkeen käytettävissä osoitteessahttp://localhost:8080/[app-name]/.- CORS
- Lisää webforJ-sovelluksesi alkuperä sallittuihin alkuperiin, esim.
http://localhost:8090. - Portit
- Molemmat käyttävät yleensä porttia 8080. Muuta toista, jotta ne eivät ole ristiriidassa.
- 3
Lisää riippuvuus
webforj-webswing-moduuli tarjoaa WebswingConnectorin ja siihen liittyvät luokat.
<dependency><groupId>com.webforj</groupId><artifactId>webforj-webswing</artifactId><version>${webforj.version}</version></dependency> - 4
Upota ja määritä
Lisää WebswingConnector näkymään kuten vaiheessa 1. WebswingOptions muuttaa sen toimintaa, esimerkiksi piilottamalla uloskirjautumispainikkeen, kun webforJ-sovelluksesi hoitaa kirjautumisen.
WebswingConnector connector = new WebswingConnector("http://localhost:8080/myapp/");WebswingOptions options = new WebswingOptions().setDisableLogout(true); // Hide the logout buttonconnector.setOptions(options);
Valitse... Ensimmäinen näyttö
Aloita yksinkertaisella listalla ja muokkauslomakkeella. Upota sovellus, siirrä yksi näkymä webforJ:hin ja katso, miten se toimii muiden rinnalla.
- Webswingin yleiskatsausMitä Webswing ratkaisee ja miten kolme kerrosta toimivat yhdessä.
- Asennus ja määritysPalvelimen asennus, hallintakonsoli, CORS ja liitinvaihtoehdot.
- ViestintäKaikki webforJ:n ja Swing-sovelluksen väliset toiminnot ja tapahtumat.
- ModernisointiopasUpotettu Swing-asiakastaulukko, jossa on webforJ-muokkausdialogi.
- webforJ AI -laajennusMCP-palvelin ja Agent Skills koodausavustajallesi.
- Dokumentaation etusivuKaikki muu webforJ:ssä ensimmäisestä projektista komponentteihin.