Доброго времени суток. Как на javafx правильно организовать реакцию event при смене radiomenuitem? Нужно, чтобы отображался обычный калькулятор, если такая-то галочка, а если галочка другая, то инженерный. ProgrCalc наследуется от SimpleCalc. В идеале, мы якобы обнаруживаем event(мол поменяли галочку) и потом делаем каст и как-то
перерисовываем все это дело или как можно поменять сцены. В общем подскажите, как это грамотнее сделать. Спасибо за ранее.
Код:
public class Calculator extends Application {
public static void main(String[] args){
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
VBox root = new VBox();
root.setStyle("-fx-background: #FFFFFF;");
root.addEventFilter(ActionEvent.ACTION, new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
if(event.getTarget() instanceof RadioMenuItem) {
RadioMenuItem target = (RadioMenuItem) event.getTarget();
}
}
});
SimpleCalc calculator = new SimpleCalc();
root.getChildren().addAll(configureMenu(), calculator.formCalc());
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.setTitle("Калькулятор");
primaryStage.setResizable(false);
primaryStage.show();
}
private MenuBar configureMenu() {
MenuBar bar = new MenuBar();
bar.setStyle("-fx-background-color: linear-gradient(to bottom," +
" #808080 0%,#808080 59%);");
final Menu view = new Menu("_Вид");
ToggleGroup groupType = new ToggleGroup();
RadioMenuItem simple = new RadioMenuItem("Обычный");
simple.setSelected(true);
simple.setToggleGroup(groupType);
simple.setAccelerator(new KeyCodeCombination(KeyCode.DIGIT1, KeyCombination.ALT_DOWN));
RadioMenuItem engineering = new RadioMenuItem("Инженерный");
engineering.setToggleGroup(groupType);
engineering.setAccelerator(new KeyCodeCombination(KeyCode.DIGIT2, KeyCombination.ALT_DOWN));
RadioMenuItem programmer = new RadioMenuItem("Программист");
programmer.setToggleGroup(groupType);
programmer.setAccelerator(new KeyCodeCombination(KeyCode.DIGIT3, KeyCombination.ALT_DOWN));
groupType.selectedToggleProperty().addListener(new ChangeListener<Toggle>() {
@Override
public void changed(ObservableValue<? extends Toggle> observable, Toggle oldValue, Toggle newValue) {
RadioMenuItem item = (RadioMenuItem) groupType.getSelectedToggle();
if(item.getText().equals("Обычный")) {
SimpleCalc calculator = new SimpleCalc();
} else {
ProgrCalc calculator = new ProgrCalc();
VBox root = new VBox();
root.setStyle("-fx-background: #FFFFFF;");
root.getChildren().addAll(configureMenu(), calculator.formCalc());
Scene scene = new Scene(root);
Stage primaryStage = new Stage();
primaryStage.setScene(scene);
primaryStage.close();
}
}
});