scala/scala-swing
57.2
Adequate · 20 September 2026
10.2k
lines of production code
Scala
primary language
1
measurement over time
What this system is
This system is the Scala Swing library, which provides a Scala wrapper for Java Swing components to enable the development of desktop graphical user interfaces. It exposes core UI elements, layout managers, and event handling mechanisms, allowing developers to build applications using idiomatic Scala syntax. The project includes a comprehensive suite of tutorial examples and demos that illustrate common UI patterns, component usage, and layout strategies. It supports multiple Scala versions, including Scala 3 and recent 2.13 releases, ensuring compatibility with modern Scala ecosystems.
How it got here
2013 — Initial scala-swing release and governance
3 changes.
This period marks the initial release of the scala-swing library, introducing core UI components and layout managers for desktop application development. Concurrently, the project established its governance framework by adopting the Apache 2.0 license, adding a Code of Conduct, and configuring the build system for modern Scala versions.
2014–2019 — Tutorial expansion and Scala 2.13 support
9 changes.
This period focused on expanding the Scala Swing tutorial suite with comprehensive demos for components, layouts, events, and focus management. It also involved adding test coverage for specific UI behaviors and implementing version-specific collection wrappers to ensure compatibility with Scala 2.13.
Features
Add component tutorial demos to Scala Swing examples
Added a suite of new Scala Swing tutorial examples in the \examples/src/main/scala/scala/swing/examples/tutorials/components\ directory, including BorderDemo, ButtonDemo, CheckboxDemo, ColorChooserDemo, ComboBoxDemo, ComboBoxDemo2, CustomComboBoxDemo, FrameDemo, FrameDemo2, and HtmlDemo. These demos demonstrate standard Swing components such as borders, buttons, checkboxes, color choosers, combo boxes, frames, and HTML rendering, providing users with reference implementations for common UI patterns.
examples/src/main/scala/scala/swing/examples/tutorials/components · high confidence
Added Beeper event listener example
The tutorial now includes a Beeper example demonstrating how to handle button click events to trigger a system beep. This new Scala Swing tutorial component allows users to learn about basic event listeners by clicking a button that produces an audible alert.
examples/src/main/scala/scala/swing/examples/tutorials/events · high confidence
Added FocusConceptsDemo tutorial example
A new tutorial example, FocusConceptsDemo, has been added to the Scala Swing tutorials. This demo illustrates how to use the focus system, allowing users to navigate between buttons, text fields, and a text area using Tab, Shift-Tab, and Control-Tab keys. The implementation follows the standard Scala Swing tutorial structure, extending SimpleSwingApplication and utilizing a BorderPanel layout.
examples/src/main/scala/scala/swing/examples/tutorials/misc · high confidence
Added Scala Swing example applications
The \examples/src/main/scala/scala/swing/examples\ directory now contains a suite of Scala Swing demo applications, including ButtonApp, CelsiusConverter, ColorChooserDemo, ComboBoxes, Dialogs, GridBagDemo, HelloWorld, LinePainting, ListViewDemo, PopupDemo, TableSelection, and UIDemo. These examples demonstrate various Swing components and interaction patterns, such as event handling, layout management, and custom rendering, providing users with reference implementations for building GUI applications.
examples/src/main/scala/scala/swing/examples · high confidence
Added demonstration applications for table sorting and dialog parent handling
The uitest module now includes two new example applications: Issue47, which demonstrates table row sorting and column reordering with selection tracking, and SI7597, which tests the ability to pass various container types (Component, Frame, Dialog) as parents to dialog-showing methods like showOpenDialog and showConfirmation.
uitest · high confidence
Added help documentation for the Styled Text Sample demo
A new HTML help page (TextSamplerDemoHelp.html) has been added to the Scala Swing tutorials. This page provides an explanation of the Styled Text Sample demo, describing how the uneditable EditorPane is initialized with HTML text from a URL and noting the availability of specialized editor kits for various text formats. The page also includes embedded Oracle SiteCatalyst tracking scripts.
examples/src/main/resources · high confidence
Added new Scala Swing layout tutorial demos
New tutorial examples have been added to the Scala Swing layout package, providing interactive demonstrations for BorderLayout, BoxLayout (including alignment handling), FlowLayout (including component orientation), and GridBagLayout. The set also includes a custom DiagonalLayout implementation and a helper component (BLDComponent) used to visualize alignment changes in the BoxLayout examples.
examples/src/main/scala/scala/swing/examples/tutorials/layout · high confidence
Initial release of scala-swing UI components
This change introduces the core scala-swing library, providing a Scala wrapper for Java Swing components. It adds foundational UI elements such as buttons, panels, text fields, and file choosers, along with layout managers like BorderPanel and GridBagPanel, enabling developers to build desktop applications using idiomatic Scala syntax.
src/main/scala · high confidence
Behavioural changes
Added Scala 2.13+ specific collection wrapper implementations
The library now includes source files for Scala 2.13+ (\BufferWrapper\, \MapWrapper\, \SetWrapper\) that adapt to the new \IterableOnce\ API, running alongside the existing Scala 2.12 implementations which use \TraversableOnce\. This change ensures the \scala.swing\ collection wrappers compile and function correctly on Scala 2.13.0-RC1 and later by providing version-specific adapters for mutable buffers, maps, and sets.
src/main/scala-2.13+ · high confidence
Project governance and licensing updates
The repository has adopted the Apache 2.0 license (replacing the previous license) and updated the NOTICE file to reflect current copyright holders (EPFL, Lightbend/Akka, and contributors). A Code of Conduct document was added, explicitly linking to the Scala Code of Conduct for repositories in the scala, scalacenter, and lampepfl organizations. Additionally, a .gitignore file was introduced to exclude build artifacts, IDE files, and OS-specific temporary files.
(repo-wide) · high confidence
Test coverage
Added tests for enumeration uniqueness and UI element event firing
Added test coverage for specific library behaviors: Issue73.scala verifies that enumeration values do not contain duplicate IDs, and Issue97.scala ensures that UI components fire exactly one event each when moved, removed, or changed in visibility.
src/test · high confidence
Dependencies
Update Scala and SBT build dependencies
The build configuration has been updated to support Scala versions 3.3.8, 2.13.18, and 2.12.21, with Scala 3.3.8 set as the default. Test dependencies have been upgraded to ScalaTest 3.2.20. The project now uses the Scala Module Plugin for module settings and enables the SBT OSGi plugin to export packages with versioning.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 57.
Lenses
- Code Health 96
- Architecture 100
- Maturity 45
- Readiness 51
- Security 75
Changes since last survey
- 300 commits — 277 feature/other, 23 fixes
By area
- (repo) — 113 commits
- (root) — 104 commits
- project/build.properties — 36 commits
- src/main — 21 commits
- .github/workflows — 9 commits
- examples/src — 7 commits
- project/plugins.sbt — 6 commits
- admin/README.md — 2 commits
- docs/images — 1 commit
- src/test — 1 commit
Notable commits
- fix: Fix copy/paste mistake
- fix: Fix issue 105
- fix: Fix link to API documentation in README.md
- fix: Merge pull request #116 from vincentdehaan/fix-issue-105-empty-tooltip
- fix: Merge pull request #184 from scala/fix-build-badge
- fix: Merge pull request #64 from scala/fix-badge
- fix: Merge pull request #67 from SethTisue/travis-openjdk6-fix
- fix: Revert "build.sh: try to support # tags for single Scala version releases again"
- fix: Revert "v3.0.0 for Scala 3.0.0-M2"
- fix: bump Scala 3 to 3.0.0-RC2; add version policy. fixes #150
- fix: fix compilation for Scala 2.13.0-RC1
- fix: fix compile error (#158)
- fix: fix compile error and CI setting
- fix: fix procedure syntax
- fix: fixed difference between this and 'master'
- fix: fixes #143
- fix: fixes #31
- fix: fixes #73
- fix: fixes #88
- fix: fixes #90 - change to Apache 2.0 license
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
scala/scala-swing was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 256d9b6817f79e51199961b189e49d01ed1b7891 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.