Невозможно использовать javafx htmleditor keyevent при запуске с JDialog - PullRequest
0 голосов
/ 28 августа 2018
public class CustomizedHTMLEditor extends HTMLEditor
{
    public CustomizedHTMLEditor()
    {
        addEventFilter(KeyEvent.KEY_RELEASED, event -> {
            if (event.getCode() == KeyCode.U && event.isAltDown()) {
                System.out.println("Alt+U is pressed");
                event.consume();
                event.isShortcutDown();
                final KeyCode platformShortcutKey = Toolkit.getToolkit().getPlatformShortcutKey();
                System.out.println(platformShortcutKey.getName());
            }
        });
    }
}

Процесс 1:

public class CustomizedHTMLEditorMain extends Application
{

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

    @Override public void start(Stage primaryStage)
    {
        CustomizedHTMLEditor customizedHTMLEditor = new CustomizedHTMLEditor();
        customizedHTMLEditor.setFocusTraversable(true);
        customizedHTMLEditor.requestFocus();
        customizedHTMLEditor.toFront();

        primaryStage.setScene(new Scene(customizedHTMLEditor));
        primaryStage.show();
    }
}

Процесс 2:

public class CutomizedHTMLPanel extends JDialog
{

    CutomizedHTMLPanel()
    {
        PlatformImpl.startup(() -> {

        });
        PlatformImpl.runAndWait(() -> {
            final JFXPanel jfxPanel = new JFXPanel();
            jfxPanel.setScene(new Scene(new CustomizedHTMLEditor()));
            add(new JPanel().add(jfxPanel));
            pack();
        });
    }

    public static void main(String[] args)
    {
        final CutomizedHTMLPanel panel = new CutomizedHTMLPanel();
        panel.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        panel.setVisible(true);
    }
}

Когда я нажимаю ALT + U в редакторе:
В процессе 1 событие успешно используется, и в редакторе не вводится символ (в данном случае «U»).
В процессе 2 символ вводится в редакторе.

Я хочу использовать сочетание клавиш ALT + U в процессе 2, и когда мы нажимаем ALT + U, не следует вводить символы.

...