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.
DeepMind has introduced Genie 3, the latest version of its “world model” framework for generating interactive 3D environments directly from text prompts.
By Daniel DominguezTravis Gosselin discusses how an internal developer portal (IDP) can combat the developer experience crisis. He explains how to empower engineering teams by building a business case for a developer portal, considering architectural choices, and balancing standardization with flexibility for effective adoption. He highlights the importance of reducing friction and improving fulfillment.
By Travis GosselinHashiCorp announced on July 31, 2025, the general availability of Hold Your Own Key (HYOK) support for HCP Terraform. This feature gives customers full control over the encryption keys used to protect sensitive Terraform artifacts such as state and plan files.
By Craig RisiLaurent Doguin and Geoffroy Couprie discuss their pioneering work with Wasm on the infrastructure side. They walk us through the benefits and challenges of building a platform over WebAssembly and why it’s the safer alternative to containers.
By Laurent Doguin, Geoffroy CouprieEngineers can avoid common pitfalls in large-scale infrastructure upgrades by studying others' experiences. The article provides lessons learned from big firms like eBay and Snowflake, offering solutions for legacy systems, performance validation, and rollback planning. It emphasizes systematic preparation and clear communication to handle challenges and ensure zero-downtime upgrades at scale.
By Kiran Bhat
© 2025 Created by Michael Levin.
Powered by
You need to be a member of Codetown to add comments!
Join Codetown