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时,有人可以告诉我如何轻松弹出提示吗?
答案 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);
}
}