Пункт меню JavaFX показывает ярлыки справа

Возьмем, к примеру, пункты меню из меню редактирования в JavaFX Scene Builder.

Видите, как они отображают ярлыки справа? Есть ли простой способ добиться того же эффекта с помощью JavaFX? Спасибо.


person Nicolas Martel    schedule 18.01.2014    source источник


Ответы (2)


Вы можете добавить клавишу-ускоритель в конструкторе сцен или добавить ее непосредственно в файл fxml, например так.

      <MenuItem mnemonicParsing="true" onAction="#mnuSaveAction" text="%menu.title.save" fx:id="mnuSave">
        <accelerator>
          <KeyCodeCombination alt="UP" code="S" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
        </accelerator>
      </MenuItem>

Если под «в javafx» вы подразумеваете без использования fxml, вы можете использовать mnuSave.setAccelerator(KeyCombination);

person brian    schedule 18.01.2014
comment
Необходимо ли указывать каждый атрибут? Например, если я хочу Ctrl+S, вам нужно указать, что alt=UP? - person Stealth Rabbi; 29.12.2015
comment
Хм, я получил ошибку времени выполнения (при загрузке представления), если я не укажу все атрибуты. Я бы подумал, что значения по умолчанию будут в порядке, но я думаю, что нет. - person Stealth Rabbi; 29.12.2015
comment
@UnKnown Mine выровнены по правому краю. Если нет, задайте вопрос и добавьте снимок экрана и небольшой образец или некоторые детали вашей настройки. - person brian; 24.07.2016
comment
@brian stackoverflow.com/questions/38545939/ Вот я и спросил. Я хочу, чтобы пункты меню были такими же, как у Firefox. - person Asif Mushtaq; 24.07.2016

Если вы не используете файл fxml, вы можете добавить комбинацию клавиш, как показано ниже.

MenuItem gotoLine = new MenuItem("Goto");
KeyCombination gotoKeyCombination = new KeyCodeCombination(KeyCode.G, KeyCombination.CONTROL_DOWN);
gotoLine.setAccelerator(gotoKeyCombination);
gotoLine.setOnAction(event -> {
            System.out.println("CTRL+G event triggered");
            System.out.println(event.toString());
 });
person prasadg    schedule 05.04.2020