{"id":47312480,"url":"https://github.com/keinhaar/gwtswing","last_synced_at":"2026-03-17T12:18:47.048Z","repository":{"id":158647931,"uuid":"435118628","full_name":"keinhaar/gwtswing","owner":"keinhaar","description":"This is an UI API similar to Java's Swing API, but on top of GWT. ","archived":false,"fork":false,"pushed_at":"2025-04-23T10:48:34.000Z","size":522,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-23T11:36:40.470Z","etag":null,"topics":["css","gwt","java","teavm"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/keinhaar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-12-05T09:02:16.000Z","updated_at":"2025-04-23T10:48:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"9d167ec8-a055-4541-976c-b3df58126ada","html_url":"https://github.com/keinhaar/gwtswing","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/keinhaar/gwtswing","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keinhaar%2Fgwtswing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keinhaar%2Fgwtswing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keinhaar%2Fgwtswing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keinhaar%2Fgwtswing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keinhaar","download_url":"https://codeload.github.com/keinhaar/gwtswing/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keinhaar%2Fgwtswing/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30623656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-17T11:26:08.186Z","status":"ssl_error","status_checked_at":"2026-03-17T11:24:37.311Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["css","gwt","java","teavm"],"created_at":"2026-03-17T12:18:45.123Z","updated_at":"2026-03-17T12:18:47.040Z","avatar_url":"https://github.com/keinhaar.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GWTSwing\nThis is an UI API similar to Java's Swing API, but on top of Java to Web transpilers like GWT and TeaVM. \nEven though, the name is still GWTSwing, it has been ported to TeaVM by introducing a platform abstraction layer named\ngplatform, with implementations for GWT and TeaVM.\n\nThere are 2 main differences between Swing an GWTSwing.\n1. Modal dialogs don't stop event execution. Instead of that, callback objects can be used, to get notified if a dialog was closed.\n2. All Classnames beginn with \"G\" instead of \"J\" (GTextField instead of JTextField). This was done to avoid license problems, because the API is now different from Oracles Swing and to avoid confusion while developing with GWTSwing.\n\nOne of the main benefits is, that there are no server calls after starting the application. Everything is handled locally on the client, until you do server calls by yourself.\n\n## What's new\n### 2024-12-27 Version 1.3\n- DefaultGestureListener will now create useful calls on Swiping, Scaling and Clicking\n- GPopupMenus will always be inside the visible Browser area. If the requested popup position is outside, then it is moved into the visible area.\n- Fixed oversized GTree\n- other Small fixes\n\n### 2024-12-21 Version 1.2.1\nThis version fixes an issue with padding on GLabels and conatins better looking Tabs as well as some other small fixes and enhancements.\n\n### 2024-03-17 Version 1.2\nGWTSwing can now dynamically switch between different Stylesheets. To see that in action just have a look at the demos listed below. Inside the demo select \"Look\" on the left, and then press one of the available style buttons like \"Dark\" for the Dark Mode.\n\n## How to use\n### GWT\nGWTSwing is used like other gwt libraries. Just add the gwtswing, gplatform and gplatform.gwt to your classpath and\n\n```\n  \u003cinherits name='de.exware.gwtswing'/\u003e\n```\nto your projects ```abc.gwt.xml```.\nAdditionally you should add the css file to your html pages header\n```\n   \u003clink type=\"text/css\" rel=\"stylesheet\" href=\"YOUR_PROJECT_NAME/de/exware/gwtswing/gwtswing.css\"\u003e\n```\n\nAfter that, you can use the GWTSwing classes in your project.\n\n```\nGPanel panel = new GPanel();\npanel.setLayout(new GGridLayout(1, 1));\nGLabel label = new GLabel(\"Hello World\");\npanel.add(label);\npanel.setSize(800,600);\nGUtilities.addToBody(panel);\n```\nLooks like Swing? Thats the goal! :-) \n\nThe call of 'GUtilities.addToBody' appends your GWTSwing UI to the Web Page.\n\nPorting an existing Swing application is now nearly as easy as replacing all \"J\" with \"G\".\n\n### TeaVM\nTo use GWTSwing with teavm you need the contents of the following\nrepositories: gplatform.teavm, gplatform and of course gwtswing.\n\nFor each of them call \n\n```\nsh nobuto.sh -t installToMaven -vvv\n```\nto add them to your local maven repository.\nThen include the gplatform.teavm and gwtswing as dependencies in your project. \n\n```\n\u003cdependency\u003e\n  \u003cgroupId\u003ede.exware\u003c/groupId\u003e\n  \u003cartifactId\u003ede.exware.gplatform.teavm\u003c/artifactId\u003e\n  \u003cversion\u003e1.0\u003c/version\u003e\n\u003c/dependency\u003e\n\u003cdependency\u003e\n  \u003cgroupId\u003ede.exware\u003c/groupId\u003e\n  \u003cartifactId\u003ede.exware.gwtswing\u003c/artifactId\u003e\n  \u003cversion\u003e1.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nFurthermore you need to include the contents of the resources folder in the webapp folder. \n\nYou have to manually link the css file with: \n\n```\n\u003clink href=\"./de/exware/gwtswing/gwtswing.css\" rel=\"stylesheet\"\u003e\n```\nNow you need to initialize the TeavmGPPlatform class with a static call to the init method.\n\n```java\npublic static void main(String[] args) \n{\n    TeavmGPlatform.init();\n    ...\n}\n```\n\nAfter that you are good to go and use the G classes of gwtswing.\n\n## Demo\nA small demo application, which shows some of the main UI components can be found here:\n\nwith GWT:   http://www.exware.de/gwtswing/demo/gwt/demo.html\n\nwith TeaVM: http://www.exware.de/gwtswing/demo/teavm/demo.html\n\n## Real live usage\nWhere is GWTSwing used\n\n### keedo\nAn archive system for digital documents which allows to set markers on documents without modifying the original documents. Includes an automatic text recognition system (OCR) for scanned documents. A demo can be found on the projects homepage. https://keeitsi.com/\n\n### Keeitsi homepage\nThe companies homepage was made with GWTSwing just to prove, that it is possible.\n\n### FFManager\nFFManager is an application to manage volunteer fire brigades. In it's newest release 4.x the developers began to port the Swing UI to GWTSwing.\nThis looks like \n\u003cbr\u003e\n\u003cimg src=\"media/ffm_gwtswing.png\" width=\"800px\"/\u003e\n\u003cbr\u003ecompared to the original swing application:\n\u003cbr\u003e\n\u003cimg src=\"media/ffm_swing.png\" width=\"800px\"/\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeinhaar%2Fgwtswing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeinhaar%2Fgwtswing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeinhaar%2Fgwtswing/lists"}