在工具栏和上下文菜单之间共享功能

时间:2016-02-20 20:52:06

标签: java javafx

我有一个:

  • 带有ContextMenu的TreeView和一个名为“New File”的MenuItem
  • 带按钮的工具栏也称为“新文件”
  • 使用InputDialog和文件创建功能

在上下文菜单和工具栏之间共享功能的好方法是什么? 静态类,Singleton还是有更好的东西?

我不想两次创建相同的功能。

2 个答案:

答案 0 :(得分:1)

只要您的程序已经构建为处理此类共享功能,这应该是相当简单的。一个好的模式,特别是如果你之前没有(作为学习练习)是Model-View-Controller (MVC)。您应该能够(通过互联网搜索)找到在JavaFX上实现MVC的教程。

在这种情况下,您将查看Controller的两个不同部分,并将它们指向模型中的相同元素(新文件功能)。

答案 1 :(得分:0)

我认为这可行得很好:

public void start(Stage stage) throws Exception {
    // Other code...

    MenuItem newFile = new MenuItem("New file...");
    Button button = new Button("New File...");

    contextMenu.getItems().add(newFile);
    toolbar.getItems().add(button);

    button.setOnAction(new Handler());
    newFile.setOnAction(new Handler());

    borderPane.setTop(toolbar);
    borderPane.setCenter(treeView);
    treeView.setContextMenu(menu);

    // Other code...
}

这里是处理程序:

public class Handler implements EventHandler<ActionEvent> {

    @Override
    public void handle(ActionEvent event) {
        // Handle the creation of the file
    }

}