Overview
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
- …
Advantages
- 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)
Features
(ReflectionUI)
- 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
(CustomUI)
- 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 |
|
|
GUI code | mostly interpreted (XML-based customizations) | generated and/or interpreted |
Standard features
|
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
Download
- Requirements: Tested on Java 8 and 17.
- License: open source: MIT (learn more).
- Use maven (dependencies)
- Or Get the source code and the binaries↓
Documentation
- Read the user guide
- Explore the examples (‘examples’ directory in the distribution folder)
Support
The support page is hosted here on GitHub.
You can also contact us by email: dotxyteam@yahoo.fr.