Tristate Checkbox for Swing

One modern GUI feature notably absent from Java Swing is the tristate checkbox, i.e. a checkbox that has a third or “null” state in addition to the checked and unchecked states. This is typically visualized as a square or dash in the checkbox, where the checked state would be a checkmark and the unchecked state … Continue reading “Tristate Checkbox for Swing”

Durocher’s Ancient Ethnostate

The Ancient Ethnostate: Biopolitical Thought in Classical Greece by Guillaume Durocher (Kindle Direct Publishing Edition 2021, currently only available as paperback via Amazon) examines ancient Greek authors, from Homer to Aristotle, regarding their ethics and customs concerning biological and cultural relationships: whether families and clans, city-states with their colonies, or the entire Greek nation. Highly … Continue reading “Durocher’s Ancient Ethnostate”

Luttwak’s Strategy: The Logic of War and Peace

Some years ago I reviewed Edward N. Luttwak’s The Grand Strategy of the Roman Empire and its Byzantine Empire sequel. In-between these two books, Luttwak published a theoretical rather than purely historical work entitled Strategy: The Logic of War and Peace (The Belknap Press of Harvard University Press 1987; revised and enlarged edition 2001). Here … Continue reading “Luttwak’s Strategy: The Logic of War and Peace”

Biagioli’s Galileo, Courtier

Mario Biagioli’s Galileo, Courtier (University of Chicago Press 1993, paperback 1994, ISBN 0–226–04560–9) examines the major stations of Galileo Galilei’s career in the context of the contemporary courtly society, and especially its patronage system. Clocking in at over 500 pages in the German translation I read (an accidental bookstore discovery), the writing is somewhat long-winded … Continue reading “Biagioli’s Galileo, Courtier”

Tektosyne 6.3.2 Released

Tektosyne 6.3.2 is now available for download. This release fixes another bug in the MultiLineIntersection class, this time a rare search state corruption in the sweep line algorithm. Thanks again to Jeff Lockhart for his valuable efforts to identify these bugs! What happened was a misordering of adjacent positions on the sweep line, caused by … Continue reading “Tektosyne 6.3.2 Released”

Tektosyne 6.3.1 Released

Tektosyne 6.3.1 is now available for download. This minor update addresses one small bug discovered by an observant user: an assertion in method MultiLineIntersection.split was triggered when a collection of split points had a size smaller than three instead of the correct two. The interesting aspect here is how I managed to miss this bug … Continue reading “Tektosyne 6.3.1 Released”

MIME Browser 2.1 Released

Version 2.1 of MIME Browser, my free EML message viewer, is now available for download. This is a bugfix release prompted by a user report that double-clicking on a folder entry could select an entirely different file in the same folder. Turns out I had forgotten to translate between display and model row indices of … Continue reading “MIME Browser 2.1 Released”

Myriarch 2.1 for Swing Released

Version 2.1.0 of Myriarch, a simple real-time simulator for pre-gunpowder tactical combat, is now available for download. As with previous project updates, the Myriarch GUI is now based on Swing due to the removal of JavaFX from Oracle’s Java SE distributions. The minimum Java requirement was consequently lowered to Java SE 8, although note that … Continue reading “Myriarch 2.1 for Swing Released”

Java Swing JComboBox Tips

This post is a sequel to Java Swing Tips which formerly contained a shorter version of these tips concerning JComboBox. I decided to extract them into their own post as they got rather long, and the section on custom rendering was not quite correct. As before I’m using Oracle OpenJDK 10 on Windows 10 for … Continue reading “Java Swing JComboBox Tips”