1

HTMLEditor を使用して編集可能なコントロールを作成しようとしています (Swing の JEditorPane や JTextPane のようなリッチテキスト ペインが必要ですが、そのためには数年待つ必要があるようです)。ユーザーにテキストを入力してもらいたいのですが、コントロールはそれに合わせて大きくなります。スクロールバーが表示されたときにイベントをキャッチし、消えるまでサイズを大きくしようとしましたが、JavaFX スレッドが実際に親のコントロールのサイズを変更するまで待つ方法がわかりません。

おそらくそれよりも良い方法があります...何かアイデアはありますか?テキストが削除された場合にそれを減らす方法はありますか?

TIA マイク・ワッツ

4

2 に答える 2

1

編集コントロールには、この例のようにcontenteditableがtrueに設定されたWebViewまたはカスタマイズされたHTMLEditorを使用します。

このエディターと同様のJava/JavaScriptブリッジを使用して対話します。JQueryを使用してWebViewのスクリプトを作成できます。JQueryディメンションクエリスクリプトを使用して編集コントロールのテキストディメンションをポーリングするタイムラインを実行し、コントロールサイズを適切に調整します

于 2012-11-21T09:27:45.717 に答える
0

[補足:jewelseaの詳細ですが、これを回答として追加しました-コメントとして返信するときにコードをフォーマットできませんでした]。

これは、ある程度機能しているものです。

WebView コンポーネントの html で、<div id='measured'>すべてのテキスト ブロックの周りにタグを追加しました

を使用して WebView にハンドラーを追加しsetOnKeyPressed、それを呼び出しますcheckHeight()

private int lastOffsetHeight;


private void checkHeight() {
    int newHeight = (Integer)webview.getEngine().executeScript(
            "document.getElementById(\"measured\").offsetHeight;") + 14;

    if (newHeight != lastOffsetHeight) {
        lastOffsetHeight = newHeight;
         webview.setPrefHeight(newHeight);
    }
}

これはそれほど悪くはありません。主な問題は、すべてのテキストが削除されると、WebView コンポーネントが div を削除することです。jewelseaが述べたように、JQueryはより良い解決策かもしれませんが、ライブラリを含める問題を修正した場合はこれを更新します;-)

于 2012-11-28T20:03:34.457 に答える