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.

Vercel has open-sourced json-render, a framework that enables AI models to create structured user interfaces from natural language prompts. Released under the Apache 2.0 license, it supports multiple frontend frameworks and features a catalog of components defined by developers. Community feedback includes both support and skepticism, highlighting its differences from existing standards.
By Daniel Curtis
AI poses major challenges for green IT: each query consumes vast energy, GPU chips last only 2-3 years, and costs stay hidden from users. Regulatory frameworks like the EU AI Act fall short on enforcement, Ludi Akue said. In her talk What I Wish I Knew When I Started with Green IT she presented model compression, quantization, and novel architectures, using sustainability as a design constraint.
By Ben Linders
AWS introduced account-regional namespaces for S3, fixing global bucket name collisions that broke IaC automation for 18 years. New format: {prefix}-{account-id}-{region}-an. CloudFormation gets the BucketNamePrefix property, and IAM gets the s3:x-amz-bucket-namespace condition key. Prevents confused-deputy attacks by making names unpredictable when there is no account ID.
By Steef-Jan Wiggers
Andrew Davidson and Akshat Vig discuss the journey of disrupting the transactional database market. They explain why the document model became the "Buckminster Fuller" moment for modern apps and share lessons on scaling from "web-scale" memes to mission-critical workloads. Leaders will learn about operational excellence, monetizing convenience over control, and navigating the open-source race.
By Akshat Vig, Andrew Davidson
In the GenAI era, code is a commodity, but alignment is not. Traditional review boards can't scale with AI-generated output. This article explores "Declarative Architecture" - transforming ADRs and Event Models into automated guardrails. Move beyond "dumping left" to a model where the conformant path is the path of least resistance, enabling decentralized governance without losing cohesion.
By Kyle Howard, Christian Johansen, Dana Katzenelson, Brian Rhoten, Warren Gray
© 2026 Created by Michael Levin.
Powered by
You need to be a member of Codetown to add comments!
Join Codetown