Warum eine Spreadsheet-Komponente für JavaFX notwendig war
Jedes Java-Team, das schon einmal eine editierbare Tabellenkalkulation in die eigene Anwendung integrieren musste, hat sich dieselbe Frage gestellt: Warum gibt es so etwas nicht für JavaFX? Wir haben uns diese Frage ebenfalls gestellt. Die verfügbaren Lösungen waren keine wirklichen Antworten:- Apache POI — Nur für das Backend. XLSX-Dateien können gelesen und geschrieben werden, eine Benutzeroberfläche gibt es jedoch nicht. Den Editor müssen Sie selbst darauf aufbauen.
- GemBox / DsExcel / Aspose — Kommerzielle Excel-APIs, ebenfalls nur für das Backend. Keine JavaFX-Benutzeroberfläche.
- ControlsFX SpreadsheetView — Ein JavaFX-Grid-Widget. Keine Formel-Engine, kein vollständiger XLSX-Roundtrip.
- Eine Web-Komponente in einer WebView — Fremder Technologie-Stack, Lizenzierung, Performance sowie Unterschiede bei Look & Feel.
- Selbst entwickeln — Monate an Entwicklungszeit. Danach noch weitere Monate für die Kompatibilität mit Excel-Formeln.
Einmal entwickeln, überall einsetzen
Die architektonische Entscheidung hat sich ausgezahlt. Vier Zahlen sagen fast alles:- 400+ Excel-Formeln — darunter Finanz-, Statistik- und Suchfunktionen
- JavaFX 8 → 21 mit derselben Codebasis
- MVVM für eine klare Trennung von Darstellung und Geschäftslogik
- Vollständiger XLSX-Roundtrip — öffnen, bearbeiten, speichern, PDF, CSV
Barrierefreiheit: Was wir aus openfx-uia gelernt haben
Eines der schwierigsten Probleme, die wir gelöst haben, hatte nichts mit Formeln zu tun. Es ging um Barrierefreiheit. Für bk.text — ein Textsystem der nächsten Generation für die deutsche Justiz — mussten wir ein Rich-Text-Dokument auf Word-Niveau über die Windows UI Automation für Screenreader und Braillezeilen zugänglich machen: Seiten, Absätze, Textabschnitte und Zeichenattribute. Die standardmäßige Barrierefreiheitsunterstützung von JavaFX deckt klassische Steuerelemente ab: Rollen, Beschreibungen und zugänglichen Text. Unter Windows gibt esTextPattern-Unterstützung für grundlegende Textsteuerelemente. Ein integriertes, Word-ähnliches Modell für paginierten Rich Text gibt es jedoch nicht.
Diese Lücke wurde von der Community geschlossen. BestSolution.at entwickelte openfx-uia, eine Open-Source-UIA-Schicht für JavaFX, die sich in die JavaFX-Barrierefreiheitsfunktionen integriert und ITextProvider, ITextRangeProvider und ITextEditProvider bereitstellt. Wir haben sie in bk.text eingesetzt, um echte Dokumentstrukturen für Anwender in der Justiz zugänglich zu machen, die auf unterstützende Technologien angewiesen sind.
Sehen Sie sich das bk.text-Showcase auf JFX Central an.
Wenn Sie barrierefreies JavaFX unter Windows für mehr als einfache Texteingaben benötigen: Beginnen Sie mit openfx-uia.
JavaFX in Swing integrieren — und produktiv einsetzen
forumSTAR-Text ist ein bestehendes, auf Swing basierendes Textverarbeitungssystem, das in der deutschen Justiz in elf Bundesländern eingesetzt wird. Es läuft jeden Tag produktiv. Als unsere Anwender Excel- und CSV-Daten innerhalb dieser Swing-Anwendung bearbeiten mussten, haben wir die Host-Anwendung nicht neu entwickelt. Wir haben SCell integriert. Der Aufbau: forumSTAR-Text (Swing) → JFXPanel → SCell (JavaFX). Das ist das einfache Diagramm. Die eigentliche Herausforderung besteht darin, die entscheidenden Punkte richtig umzusetzen, damit das System einen vollständigen Arbeitstag mit juristischen Dokumenten zuverlässig übersteht:- Threading — Der Swing EDT und der JavaFX Application Thread sind nicht automatisch miteinander kompatibel. Jeder Aufruf über die Systemgrenze hinweg muss entsprechend vermittelt werden.
- Fokus — Der Tastaturfokus über die Swing-/JavaFX-Grenze hinweg ist ein klassischer Fehlerpunkt. Wenn er nicht funktioniert, bemerken Benutzer das sofort.
- Lifecycle — Startreihenfolge der JavaFX-Runtime, Initialisierungssequenz und Shutdown-Hooks.
- Speicher — Lang laufende Sitzungen in der Justiz tolerieren keinerlei Speicherlecks.
- DPI und hoher Kontrast — Swing-Host und JavaFX-Komponente arbeiten mit unterschiedlichen Skalierungswelten. Beide müssen zuverlässig zusammenspielen.
Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenDesktop und Web mit einer gemeinsamen Codebasis — mit JPro
Dieselbe SCell-Binärdatei läuft auch im Browser. Dieselben 400+ Formeln, dasselbe MVVM, kein separater Web-Build. Möglich wird dies durch JPro von Sandec, das die JavaFX-Szene serverseitig im Browser rendert. Unsere Erfahrungen aus dem Betrieb:- Die Performance beim Rendern von Zellen ist gut, auch bei großen Tabellen.
- Das Verhalten der Zwischenablage unterscheidet sich zwischen Desktop und Browser und muss entsprechend behandelt werden.
- Kontextmenüs per Rechtsklick benötigen eine explizite Anbindung für das Web.
- Der serverseitige Betrieb ist die entscheidende Funktion für unsere Unternehmenskunden — die Datei verlässt niemals deren Infrastruktur.
Vier völlig unterschiedliche Host-Anwendungen, eine Komponente
Weil wir die Abstraktion von Anfang an richtig aufgebaut haben, wird dieselbe JavaFX-Komponente in völlig unterschiedlichen Host-Anwendungen eingesetzt:- Polarion ALM — Eclipse RCP / SWT (Siemens · ALM) — Verkauft · im Marketplace
- forumSTAR-Text — Swing (Justiz · 11 Bundesländer) — Verkauft · produktiv im Einsatz
- bk.text — JavaFX, gemeinsam entwickelt (Justiz · nächste Generation) — Prototyp integriert
- SAP S/4HANA — Desktop + Web (Enterprise ERP) — Proof of Concept
Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenBonus: Zwei XLSX-Dateien Zelle für Zelle vergleichen
Excel verfügt über kein integriertes Diff-Tool. Für einen visuellen Vergleich in der Microsoft-Welt wird Spreadsheet Compare benötigt — eine Enterprise-Funktion, die den meisten Anwendern nicht zur Verfügung steht. Wir haben den visuellen XLSX-Vergleich direkt in SCell integriert. Zwei Dateien werden nebeneinander dargestellt, wobei Unterschiede bei Daten, Formeln und Formatierungen Zelle für Zelle in derselben vertrauten Tabellenansicht hervorgehoben werden. Wenn Ihre Anwender in regulierten Umgebungen arbeiten, in denen jede Änderung nachvollziehbar sein muss, ist allein diese Funktion ein Grund, sich SCell näher anzusehen.Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenDrei zentrale Erkenntnisse
1. JavaFX ist bereit für komplexe Komponenten im produktiven Einsatz. 400+ Formeln, MVVM, eine gemeinsame Codebasis von JavaFX 8 bis 21. Die Plattform liefert. 2. Die Verbindung zwischen Swing und JavaFX funktioniert — mit der nötigen Disziplin. Threading, Fokus, Lifecycle, DPI. Wenn diese Punkte stimmen, können Sie Swing-Systeme schrittweise modernisieren, ohne eine komplette Neuentwicklung. 3. Nutzen Sie die Arbeit der Community. openfx-uia von BestSolution.at. JPro von Sandec. QF-Test von Quality First Software. JFX Central. Nutzen Sie diese Werkzeuge, geben Sie den Entwicklern die verdiente Anerkennung und tragen Sie selbst etwas zur Community bei.Ein kleines Geschenk: SCell.Reader für IntelliJ IDEA
Ein kostenloses Plugin. Lesen Sie XLSX-Dateien direkt in Ihrer IDE — mit derselben SCell-Engine, die auch in Polarion, forumSTAR-Text und den SAP-PoCs zum Einsatz kommt. In zehn Sekunden installiert. Jetzt im JetBrains Marketplace erhältlich.Sprechen wir darüber
Hat Sie etwas aus dem Vortrag angesprochen?- Sie möchten SCell in Ihre Anwendung integrieren — auf dem Desktop oder im Web
- Sie haben eine Swing-Anwendung und möchten JavaFX-Komponenten integrieren
- Ihre Anwender müssen verschiedene Versionen von Tabellenkalkulationen vergleichen
- Sie benötigen barrierefreies JavaFX unter Windows


