Skip to content
CAI
Software that uses CAICheck a score

scala/scala-swing

57.2

Adequate · 20 September 2026

10.2k

lines of production code

Scala

primary language

1

measurement over time

CAI band scale
CAI lens gauges

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.