用于在微调器中超出最大整数的警报消息

时间:2016-02-08 21:26:41

标签: java javafx

anzahlLED.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(1, 3, 1));
        ChangeListener<Integer> ledListener = new ChangeListener<Integer>() {
            @Override
            public void changed(ObservableValue<? extends Integer> observable, Integer oldValue, Integer newValue) {
                if (newValue == 1 && oldValue == 2) {
                    secondLEDCombo.setDisable(true);
                    secondLEDTextUf.setDisable(true);
                    secondLEDTextIf.setDisable(true);
                    if (schaltung.getSelectionModel().getSelectedItem().equals("Parallelschaltung")) {
                        //
                    } else if (schaltung.getSelectionModel().getSelectedItem().equals("Reihenschaltung")) {
                        secondLEDTextUf.setText(null);
                        secondLEDTextIf.setText(null);
                    }
                }
                if (newValue == 2 && oldValue == 1) {
                    secondLEDCombo.setDisable(false);
                    secondLEDTextUf.setDisable(false);
                    if (schaltung.getSelectionModel().getSelectedItem().equals("Parallelschaltung")) {
                        secondLEDTextIf.setDisable(false);
                    } else if (schaltung.getSelectionModel().getSelectedItem().equals("Reihenschaltung")) {
                        secondLEDTextIf.setText(firstLEDTextIf.getText());
                    }
                }
                if (newValue == 2 && oldValue == 3) {
                    thirdLEDCombo.setDisable(true);
                    thirdLEDTextUf.setDisable(true);
                    thirdLEDTextIf.setDisable(true);
                    if (schaltung.getSelectionModel().getSelectedItem().equals("Parallelschaltung")) {
                        //
                    } else if (schaltung.getSelectionModel().getSelectedItem().equals("Reihenschaltung")) {
                        secondLEDTextIf.setDisable(true);
                        thirdLEDTextUf.setText(null);
                        thirdLEDTextIf.setText(null);
                    }
                }
                if (newValue == 3 && oldValue == 2) {
                    thirdLEDCombo.setDisable(false);
                    thirdLEDTextUf.setDisable(false);
                    if (schaltung.getSelectionModel().getSelectedItem().equals("Parallelschaltung")) {
                        thirdLEDTextIf.setDisable(false);
                    } else if (schaltung.getSelectionModel().getSelectedItem().equals("Reihenschaltung")) {
                        thirdLEDTextIf.setText(firstLEDTextIf.getText());
                    }
                }
            }
        };       

我有一个问题,如果我想要从3到4,我想要留言。如你所见,我的旋转器中只有1,2,3。我希望当用户尝试选择4时会弹出警报。所以我的想法是我将最大值更改为4然后检查它并在创建警报时再次减少数字。这不起作用,因为在更改之前递减会触发Listener,所以我有一个无限循环。

当我尝试选择4时,有人可以告诉我如何轻松弹出提示吗?

1 个答案:

答案 0 :(得分:1)

这不是很强大,但您可以使用查找来获取增量按钮,并使用它注册一个侦听器。如果您为鼠标按下了一个事件过滤器,它会在更改值之前捕获它。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Spinner;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class SpinnerTest extends Application {

    @Override
    public void start(Stage primaryStage) {
        Spinner<Integer> spinner = new Spinner<>(1, 3, 1);
        Scene scene = new Scene(new StackPane(spinner), 180, 80);

        spinner.applyCss();
        spinner.lookup(".increment-arrow-button").addEventFilter(MouseEvent.MOUSE_PRESSED, e -> {
            if (spinner.getValue().intValue() == 3) {
                Alert alert = new Alert(AlertType.INFORMATION);
                alert.setContentText("Maximum is 3");
                alert.showAndWait();
            }
        });

        primaryStage.setScene(scene);
        primaryStage.show();


    }

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