【问题标题】:Share functionality between toolbar and context menu在工具栏和上下文菜单之间共享功能
【发布时间】:2023-03-29 07:44:01
【问题描述】:

我有一个:

  • 带有 ContextMenu 和一个名为“新文件”的 MenuItem 的 TreeView
  • 带有按钮的工具栏也称为“新文件”
  • InputDialog 和文件创建函数

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

我不想重复创建相同的函数。

【问题讨论】:

  • 只是让每个处理程序调用相同的方法?如果没有一些实际的上下文,就不清楚问题是什么。

标签: java javafx


【解决方案1】:

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

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

【讨论】:

【解决方案2】:

我认为这可能会很好:

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
    }

}

【讨论】:

    猜你喜欢
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2011-10-20
    相关资源
    最近更新 更多