3

HTMLEditorJavaFX のコンポーネントを使っていくつかの実験をしようとしていました。次のコードを使用しました(抜粋):

    fxPanel=new JFXPanel();
    Platform.runLater(new Runnable() {
        @Override
        public void run() {
            Group group = new Group();
            scene = new Scene(group);               
            fxPanel.setScene(scene);
            view = VBoxBuilder.create().build();

            group.getChildren().add(view);


            edit = HTMLEditorBuilder.create().build();
           // toolPane = TabPaneBuilder.create().minHeight(60d).build();
            //toolPane.getTabs().add(new Tab("Allgemein"));

            view.getChildren().add(edit);

        }
    });

    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            jPanel1.add(fxPanel);
        }
    });

これまでのところ、1 つの重要な例外を除いて問題なく動作します。BR にリターン キーを使用することはできません。無視されているようです。このキーにはまったく反応がありません。私が見る限り、他のキーは期待どおりに機能します。

4

4 に答える 4

9

私はそれに気付きましたCTRL-M動作Enterしない場所で動作します。そこでKeyListener、JFXPanel に を配置し、KeyCharを 10 から 13 に変更して、イベントをシステム イベント キューに再ポストすることで、この問題を回避しました。ENTERHTMLEditor がとCTRL-の両方に応答し始めた場合、これは後で意図したとおりに機能しなくなる可能性がMあります。

fxPanel.addKeyListener(new KeyListener() {

    public void keyTyped(KeyEvent e) {
        if (e.getKeyChar() == 10) {
            e.setKeyChar((char) 13);
            Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(e);
        }
    }

    public void keyPressed(KeyEvent e) {}

    public void keyReleased(KeyEvent e) {}
});

誰かが今のところより良いアイデアを持っていますか?

編集: 目的の効果を得る別の方法を見つけたのは、KeyEventDispatcher次のように現在のキーボード フォーカス マネージャーにカスタムをインストールすることです。

KeyboardFocusManager kfm = DefaultKeyboardFocusManager.getCurrentKeyboardFocusManager();
kfm.addKeyEventDispatcher(new KeyEventDispatcher() {
    @Override
    public boolean dispatchKeyEvent(KeyEvent e) {
        if (DefaultKeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner() == jfxPanel) {
            if (e.getID() == KeyEvent.KEY_TYPED && e.getKeyChar() == 10) {
                e.setKeyChar((char) 13);
            }
        }
        return false;
    }
});

KeyEventこれには、後で新しいものを投稿するのではなく、元のものを変更できるという利点がありHTMLEditorますEnter

于 2012-09-24T23:50:09.580 に答える
4

これはJavaFXの既知のバグであることがわかりました。

https://javafx-jira.kenai.com/browse/RT-33354
および
http://javafx-jira.kenai.com/browse/RT-20887

ただし、参考までに、JavaFX2.2では「修正されない」として解決されました。JavaFX8では問題ありません。

于 2012-07-04T12:14:11.167 に答える