项目作者: Dacaspex

项目描述 :
Java Swing property sheet component to quickly create settings menus
高级语言: Java
项目地址: git://github.com/Dacaspex/PropertySheet.git
创建时间: 2018-08-31T12:17:53Z
项目社区:https://github.com/Dacaspex/PropertySheet

开源协议:MIT License

下载


PropertySheet

Java Swing property sheet component. Build settings menus on the fly.

Example image of property sheet

How it works, simply

The PropertySheet is an augmented JTable to which you can quickly add properties. These are then rendered in a sort of settings menu style.

  1. IntegerProperty prop1 = new IntegerProperty("My integer property", 42);
  2. FloatProperty prop2 = new FLoatProperty("My float property", 11.12);
  3. PropertySheet sheet = new PropertySheet(new PropertySheetOptions());
  4. sheet.addProperty(prop1);
  5. sheet.addProperty(prop2);

Supperted values out of the box

The following types are supported out of the box with this library:

  • Integer
  • Long
  • Double
  • Float
  • Color
  • Boolean
  • String
  • Selection (drop down menu)

Validation

Properties can have numerous (custom) validators to make sure the value is what you want it to be.

  1. IntegerProperty prop = new IntegerProperty(
  2. "My integer property",
  3. 42,
  4. new CompoundValidator(
  5. new IntegerValidator(),
  6. new IntegerRangeValidator(30, 50)
  7. )
  8. );

Or even easier with a Factory!

  1. IntegerProperty prop = new IntegerProperty(
  2. "My integer property",
  3. 5,
  4. new IntegerValidatorFactory()
  5. .setRange(-5, 10)
  6. .allowZero(false)
  7. .build()
  8. );

Custom properties

You can create custom properties with custom renderers and editors (as long as the JTable supports it). These can be added via various methods in the PropertySheet class.

Event listeners

Add event listeners to listen for update or create events.

  1. class EventListener implements PropertySheetEventListener {
  2. @Override
  3. public void onPropertyUpdated(Property property) {
  4. // TODO
  5. }
  6. @Override
  7. public void onPropertyAdded(Property property) {
  8. // TODO
  9. }
  10. }
  11. sheet.addEventListener(new EventListener());

Or let your event listener class extend the PropertySheetEventAdapter for easier use.