如何从javafx中的属性文件提供键码

时间:2018-07-20 06:04:22

标签: javafx keyevent properties-file

当前,我已经为每个任务的键盘控制器配置了JavaFX keyEvents。我想要的是从属性文件中配置密钥,而不是在代码中进行硬编码。

实现:

 final KeyCombination keyCombinationShiftC = new KeyCodeCombination(
            KeyCode.ENTER, KeyCombination.CONTROL_DOWN);

    javafx.event.EventHandler<javafx.scene.input.KeyEvent> handler = event -> {
        if (keyCombinationShiftC.match(event)) {
            try {
                if (finalSubTotalPrice > 0) {
                    paymentAction();
                } else {
                    Alert alert = new Alert(Alert.AlertType.WARNING);
                    alert.setTitle(app.values.getProperty("WARNING_TITLE"));
                    alert.setHeaderText(app.values.getProperty("INVALID_NO_OF_ITEMS"));
                    alert.setContentText(app.values.getProperty("INVALID_NO_OF_ITEMS_DIALOG"));
                    alert.showAndWait();
                }
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }

        switch (event.getCode()) {
            case F10:
                try {
                    removeAction();
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
                break;
            case F1:
                try {
                    searchField.requestFocus();
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
                break;
            case F5:
                try {
                    customVatDiscountCalculation();
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
                break;
             }

需要在不使用属性文件更改代码的情况下将ENTER + CNTRL_DOWN,F5,F10,F1键分配给其他键。

如果我尝试从属性文件中获取字符串,则无法这样做。如下。它说这种情况需要一个常量表达式。

    public static final KeyCode REMOVE_KEY = KeyCode.getKeyCode(app.values.getProperty("REMOVE_KEY"));


    switch (event.getCode()) {
            case REMOVE_KEY:
                try {
                    removeAction();
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
                break;

  }

0 个答案:

没有答案