在javafx 8.0中创建UML元素的最佳方法是什么?

时间:2015-04-27 16:11:07

标签: java javafx-8

我正在尝试使用JavaFX创建一个UML编辑器,我需要添加场景UML元素,如Actor,Process,Class等。这些元素需要是可选择的,可调整大小的,它们的颜色和字体可改变的。

我一直在研究JavaFX规范,我发现了一些可能的解决方案,但是自定义控件和形状的文档似乎很浅。

我的想法是简单地将这些组件添加到场景中:

// Simplified code
public ClassController {
  @FXML
  private Pane editorPane;

  // this would be called by an event
  public addClass(int x, int y, UMLClass umlClass) {
    // either a Control, Shape or Path
    UMLClassComponent umlClassCp = new UMLClassComponent(x, y, umlClass);
    editorPane.getChildren().add(umlClassCp);
  }
}

我正在考虑:

  • 创建自定义Shape。然而,子类化Shape似乎并不是一项简单的任务,我找不到任何关于如何做到这一点的指示。我一直在看Rectangle和其他形状,但我不知道Shape Architecture ......
  • 使用路径绘制组件,如图所示here。我可以添加一些MoveTo,LineTo PathElements来创建我需要的UML元素。这似乎不太理想,因为它非常冗长。
  • 子类Control,使用SkinBase定义Skin,使用BehaviorBase定义Behavior。这感觉就像一个很好的解决方案,我已经找到了相当多的文档和方法。但是,我可以将我的UML元素视为控件吗?如果它们仅由一个应用程序使用,则子类控制似乎被视为过度杀伤。此外,从JavaFX 8开始,BehaviorBase仍然是私有的。

0 个答案:

没有答案