【问题标题】:JavaFX - Show Alert Dialog within ChangeListener eventJavaFX - 在 ChangeListener 事件中显示警报对话框
【发布时间】:2017-04-29 13:36:55
【问题描述】:

我想在微调器的 valueProperty 更改时显示一个警告对话框。因此,我在我的 valueProperty 中添加了一个 ChangeListener:

this.spinnerColumns.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(2,20));

this.spinnerColumns.getValueFactory().valueProperty().addListener((observable, oldValue, newValue) -> {

  if(oldValue > newValue) {
    // Ask for permission
    System.out.println("Ask for permission");
    Alert alert = new Alert(Alert.AlertType.WARNING);
    alert.setTitle("Error");
    alert.setHeaderText("Ask something...");
    alert.showAndWait();

    if(alert.getResult() == ButtonType.OK) {
      // do something
    }
  }
});

此代码无法正常工作。显示警报时,微调器会不断降低其值,直到达到最小值。一些建议如何做到这一点?

【问题讨论】:

    标签: java javafx spinner alert changelistener


    【解决方案1】:

    据我所知,不使用反射很难停止旋转...试试这个代码。

    if(oldValue > newValue) {
    
        try {
            Skin<?> skin = this.spinnerColumns.getSkin();
            Object behavior = skin.getClass().getMethod("getBehavior").invoke(skin);
            behavior.getClass().getMethod("stopSpinning").invoke(behavior);
        } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
            e.printStackTrace();
            return; // If refleciton failed, do nothing
        }
    
        // Ask for permission
    

    【讨论】:

      猜你喜欢
      • 2015-06-26
      • 1970-01-01
      • 2023-03-13
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多