Codetown ::: a software developer's community
Gerrit Grunwald, aka @hansolo_ on twitter, has just ported his Swing based gauges and meters framework known as SteelSeries to JavaFX as part of the JFXtras-lab project. I can't tell you how many times since Java AWT first came out, that I have had to use meters and gauges in an application. Also, I can't count how many times I have found a dearth of open source gauge frameworks out there in the wild. Needless to say, I have been watching Gerrit's progress for several months now. Finally, he posted his work to jxftras-lab and I have been eagerly testing ever since.
One area I wanted to see is if Gerrit's gauges worked with JavaFX FXML. JavaFX FXML is an XML-based language that provides the structure for building a user interface separate from the application logic of your code. With the numerous options that Gerrit's gauges support, this is a must have. I am happy to report with a little back and forth with Gerrit over a few days, we now have a working version that supports FXML. You'll have to download and build the latest jfxtras-lab bits from github, here.
Here is an FXML snippet showing how to define a Radial gauge in FXML. This matches Gerrit's blog, showing the same settings using Java code, here.
<Radial fx:id="radialGauge" prefWidth="280" prefHeight="280" title="Temperature" >
<unit>°C</unit>
<lcdDecimals>2</lcdDecimals>
<frameDesign>STEEL</frameDesign>
<backgroundDesign>DARK_GRAY</backgroundDesign>
<lcdDesign>STANDARD_GREEN</lcdDesign>
<lcdDecimals>2</lcdDecimals>
<lcdValueFont>LCD</lcdValueFont>
<pointerType>TYPE14</pointerType>
<valueColor>RED</valueColor>
<knobDesign>METAL</knobDesign>
<knobColor>SILVER</knobColor>
<sections>
<Section start="0" stop="37" color="lime"/>
<Section start="37" stop="60" color="yellow"/>
<Section start="60" stop="75" color="orange"/>
</sections>
<sectionsVisible>true</sectionsVisible>
<areas>
<Section start="75" stop="100" color="red"/>
</areas>
<areasVisible>true</areasVisible>
<markers>
<Marker value="30" color="magenta"/>
<Marker value="75" color="aquamarine"/>
</markers>
<markersVisible>true</markersVisible>
<threshold>40</threshold>
<thresholdVisible>true</thresholdVisible>
<glowVisible>true</glowVisible>
<glowOn>true</glowOn>
<trendVisible>true</trendVisible>
<trend>RISING</trend>
<userLedVisible>true</userLedVisible>
<bargraph>true</bargraph>
<radialRange>RADIAL_300</radialRange>
<GridPane.rowIndex>0</GridPane.rowIndex>
<GridPane.columnIndex>0</GridPane.columnIndex>
<GridPane.halignment>CENTER</GridPane.halignment>
<GridPane.valignment>CENTER</GridPane.valignment>
</Radial>
This produced the following display:
In FXML, you create a Java controller class. For this simple example, in the controller class, Gauge.java, I created a JavaFX Timeline that iterates from the minimum to the maximum value over 10 seconds, alternating with rising and falling values. The actual Radial Gauge is represented by the "radialGauge" member of the controller that is annotated with @FXML. This allows the FXML system to match the actual JavaFX Radial Control instance to the controller member variable based on the FXML"fx:id" attribute. The initialize method of the controller class is called once the FXML system has processed the XML and created all the JavaFX Nodes.
The main JavaFX application is contained in the class SteelFX and it loads the FXML file then assigns it to the JavaFX Scene.
The complete code is here:
Codetown is a social network. It's got blogs, forums, groups, personal pages and more! You might think of Codetown as a funky camper van with lots of compartments for your stuff and a great multimedia system, too! Best of all, Codetown has room for all of your friends.
Created by Michael Levin Dec 18, 2008 at 6:56pm. Last updated by Michael Levin May 4, 2018.
Check out the Codetown Jobs group.

jQuery 4 has launched, celebrating 20 years of innovation in web development. This major update modernizes the library by removing legacy code and outdated browser support while ensuring simplicity and performance. With enhanced compatibility for modern build tools and new security features, jQuery 4 remains a practical choice for developers, bolstering productivity while maintaining its legacy.
By Daniel Curtis
The OpenTelemetry open-source observability project recently published a comprehensive guide titled "Demystifying OpenTelemetry" aimed at helping organizations understand, adopt, and scale observability using the OpenTelemetry standard.
By Craig Risi
Alex Radovici explains the shift from C-ABI and scripting to the Wasm Component Model (WASI Preview 2). He shares how to build secure plugin systems that run at near-native speed across Rust, TypeScript, and C++. Architects will learn about Wasm Interface Types (WIT), resource management, and the practical lessons learned from deploying sandboxed extensions in safety-critical environments.
By Alex Radovici
JDK 26, the first non-LTS release since JDK 25, has reached its second release candidate with a final set of 10 new features, in the form of JEPs, that can be separated into five categories: Core Java Library, HotSpot, Java Language Specification, Security Library and Client Library. We examine JDK 26 and predict what features have, or could be, targeted for JDK 27.
By Michael Redlich
Amazon Key modernized its event platform by adopting a centralized, event-driven architecture built on Amazon EventBridge. The redesign processes millions of daily events with millisecond latency, improves schema governance, automates cross-account routing, and reduces service onboarding time from 48 hours to four, while maintaining 99.99 percent reliability.
By Leela Kumili
© 2026 Created by Michael Levin.
Powered by
You need to be a member of Codetown to add comments!
Join Codetown