ReflectionUI is a free (open source) Java GUI builder/generator library.

The generation of the GUI (graphical user interface) requires no other information that the object itself. Its structure is discovered at run-time through Java reflection.The generated GUI can be customized in a non-intrusive way by overriding some key methods of the generator objects.

CustomUI is a sub-project of ReflectionUI providing a GUI builder. It actually allows WYSIWYG advanced customizations of user interfaces generated by ReflectionUI.

More videos here.

Use Cases

  • Developing a project GUI by generating and customizing it
  • Prototyping a GUI
  • Exploring a library capabilities quickly through a generated GUI


  • Instant prototyping
  • Reduced cost of user interface development and testing
  • Code injection simplified for cross-cutting concerns (logs, usage statistics, etc.)

GUIs created using CustomUI (ReflectionUI)

  • Examples



  • On the fly GUI generation
  • Controls generated for public fields, methods, get/set properties, …
  • Automatic undo/redo management
  • Automatic copy/cut/paste management
  • Dynamic menus
  • Field validation
  • On-line help management
  • Elegant display for exceptions
  • Non-intrusive customizations
  • Generator pluggable to any meta-data model


  • WYSIWYG GUI customization
  • Various configurable controls (forms, sliders, spinners, tables, trees, html panes, …)
  • Grouping and categorizing controls
  • Flexible layout management
  • Skinning
  • Icons
  • Menus (standard and custom items)
  • Extensible (control plugins)

Differences compared to classic GUI builders

CustomUI (ReflectionUI) Classical GUI builder
GUI structure
  • generated
  • customized
  • designed
  • connected to the data
GUI code mostly interpreted (XML-based customizations) generated and/or interpreted
Standard features
  • copy/cut/ paste
  • undo/redo
  • open/save file
  • etc
enabled/disabled developed
GUI update automatic manual
GUI maintenance optional mandatory
GUI re-usability reusable plugins can be developed reusable controls can be developed

Getting started

  • Use Maven (dependencies)
  • Or Get the archive file from the download area
    • Extract it
    • Add the jars from the ‘lib’ directory to your classpath
  • Run the class: xy.reflect.ui.control.swing.customizer.SwingCustomizer



  • Read the user guide
  • Explore the examples (‘examples’ directory in the distribution folder)


The support page is hosted here on GitHub.

You can also contact us by email: dotxyteam@yahoo.fr.