JavaFx 电子表格单元格右键单击打开对话框

标签 java javafx event-handling controlsfx

我是 ControlsFx Api 的 SpreadSheet 功能的新手。我想在 Javafx 中右键单击 SpreadsheetViewSpreadsheetcell 打开 Dialog。非常感谢任何帮助。

最佳答案

这是您可以脱离标准 ContextMenu 并使用 Dialog 实现自己的处理程序的代码,在此示例中 TextInputDialog:

  SpreadsheetView spreadsheetView = new SpreadsheetView();
    //off the standard ContextMenu
    spreadsheetView.setContextMenu(null);
   //set own handler for right click with Dialog
    spreadsheetView.setOnContextMenuRequested(new EventHandler<ContextMenuEvent>() {
      @Override public void handle(ContextMenuEvent event) {
        CellView cellView = (CellView) event.getTarget();
        TextInputDialog dialog = new TextInputDialog(cellView.getText());
        Optional<String> result = dialog.showAndWait();
        if (result.isPresent()){
          System.out.println(cellView.getText());
        }
      }
    });

我不太了解这个库,但它运行良好。 工作原理示例:

enter image description here

我的程序:

public class MainController extends Application {

  public static void main(String[] args) {
    launch(args);
  }

  @Override public void start(Stage primaryStage) throws Exception {


    SpreadsheetView spreadsheetView = new SpreadsheetView();
    //off the standard ContextMenu
    spreadsheetView.setContextMenu(null);
    //set own handler for right click with Dialog
    spreadsheetView.setOnContextMenuRequested(new EventHandler<ContextMenuEvent>() {
      @Override public void handle(ContextMenuEvent event) {
        CellView cellView = (CellView) event.getTarget();
        TextInputDialog dialog = new TextInputDialog(cellView.getText());
        Optional<String> result = dialog.showAndWait();
        if (result.isPresent()) {
          System.out.println(cellView.getText());
        }
      }
    });

    HBox hBox = new HBox();
    hBox.getChildren().add(spreadsheetView);
    Scene scene = new Scene(hBox);
    primaryStage.setScene(scene);
    primaryStage.show();
  }
}

关于JavaFx 电子表格单元格右键单击打开对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39551268/

相关文章:

java - 如何使用端口号来保护 Web 请求

Java 循环遍历 2D 数组 - 作业

JavaFX 在 jdk7 上工作正常,但在 jdk8 上不行 : Not on FX application thread

java - 使用 javafx 中的单选按钮打开/关闭 slider

JavaFX 延迟绘制形状

event-handling - 教程 OpenCl 事件处理

c# - 具有 2 个处理程序的事件 Func<bool> : which return to expect?

java.lang.OutOfMemoryError : Java heap space to find all strings of length n 错误

java - JSF 2.0 : Delay rendering (composite) component's contents until AJAX-call re-renders it

javascript - 防止对话框中的转义键传递到底层窗口