Skip to content
Theme

Documentation

Limn is a UI toolkit for desktop Java. You add one dependency, write plain Java, and get a window with your own widgets in it. There is no markup language, no annotation processor and no build plugin; a screen is a method that returns a widget.

If you have never run it, Install and first window takes about five minutes and ends with a window on screen. Widgets and scenes is the twenty-minute version of everything else: the four ideas the rest of the guide builds on.

Layout and Forms are the two pages most applications need first, and both carry a complete worked example with the screenshot it produces. Lists and scrolling covers long content; Menus and dialogs covers the parts that leave the window, the system’s file choosers, handing a link or a file to the system’s own programs, and an icon in the system’s tray; Drag and drop covers rows that rearrange, what is dragged to and from other programs, and the clipboard; Printing and PDF covers saving a report as PDF, printing it through the system’s dialog and showing a preview first; and Charts covers bars, lines and donuts.

Theming is colour, shape, depth and density, including building a palette of your own and letting your users build one. Text and languages is what to do when your users are not all reading English, and Accessibility is what a screen reader says about your window and the one call that makes it say the right thing. Images and media covers pictures, video and the 3D viewport, Animations covers making something move, and Your own widgets covers a control the toolkit does not have.

Background work is the one rule that will bite you if you skip it: anything slow goes off the UI thread, and the toolkit gives you a shape for that. Performance says what a frame costs and how to keep it small, Testing drives a screen from a test with no display, and Packaging turns the result into something you can send someone. Troubleshooting is where to look when a machine you sent it to will not start it, or a message you have not met before appears.