4

JavaFX HTMLEditor の setHtmlText を使用してローカルイメージを追加する方法を探しています。問題なくリモート イメージを追加できます。

HTMLEditor editor = new HTMLEditor();  
    editor.setHtmlText("<img src=\"http://someaddress.com\" width=\"32\" height=\"32\" >");

しかし、ローカル画像に対してこれを行うことはできません

HTMLEditor editor = new HTMLEditor();  
    editor.setHtmlText("<img src=\"categoryButton.fw.png\" width=\"32\" height=\"32\" >");

このボタンは Java ソースと同じレベルにあります。では、なぜこれが機能しないのでしょうか。

4

3 に答える 3

4

getResourceを使用して、ローカル イメージ リソースの場所を取得します。

editor.setHtmlText(
  "<img src=\"" + 
     getClass().getResource("categoryButton.fw.png") + 
  "\" width=\"32\" height=\"32\" >"
);

次のように、コンテンツをWebViewにロードするのと同じように機能します。

javafx.scene.web.WebEngine#loadContent によってロードされた html ページから css および画像ファイルに到達する方法は?


スクリーンショットは次のとおりです。

エディタ付き画像

実行可能なサンプル:

import javafx.application.*;
import javafx.scene.Scene;
import javafx.scene.web.HTMLEditor;
import javafx.stage.Stage;

public class HTMLEditorWithImage extends Application {
  @Override public void start(Stage stage) {
    HTMLEditor editor = new HTMLEditor();
    editor.setHtmlText(
      "<img src=\"" + 
         getClass().getResource("Blue-Fish-icon.png") + 
      "\" width=\"32\" height=\"32\" >"
    );
    stage.setScene(new Scene(editor));
    stage.show();
  }

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

これがある種のテキスト領域に画像を入れる唯一の方法であるかどうか、私はただ興味がありましたか?

  1. JavaFX 2 では、 Javafx Text multi-word colorization説明されているように、テキストと混合された画像を FlowPane に埋め込むことができます。
  2. Java 8 では、テキスト領域に画像を埋め込むことができる TextFlowコンポーネントが追加されています。

上記の両方の手法は、データ表示のみを目的としています。画像やその他のノードが挿入された複数スタイルのテキストを編集することもできません。現時点では、この機能のために JavaFX プラットフォームによって提供される唯一のコントロールは、HTMLEditorまたはcontenteditable trueを持つWebViewか、JavaScript で記述された組み込みのサードパーティ エディタです

WebView や HTMLEditor に依存しないネイティブ JavaFX コンストラクトを使用して、スタイル付きのテキスト エディターを作成するサード パーティの取り組みがいくつかありますが、今日の時点で、広く使用される準備ができているものはないと思います。

于 2013-04-04T18:22:11.077 に答える
2

サンプル コード: image タグに file:\\ を追加して、ローカル ファイルを参照します。

ScreenCapture x = new ScreenCapture();
String imagePath = x.captureScreen(scCaptureCount+++"", "C:\\work\\temp");
String text = editor.getHtmlText();
editor.setHtmlText(text+"&lt;img src='file:\\\\"+imagePath+"' >" );
于 2014-06-01T16:12:26.623 に答える
0

このコードは、最後の段落終了タグまたは本文終了タグの前に画像を挿入します。

String imgUrl = "http://..../image.png";
StringBuilder sb = new StringBuilder(htmlEditor.getHtmlText());
int pos = sb.lastIndexOf("</p>") > -1 ? sb.lastIndexOf("</p>") : sb.lastIndexOf("</body>");
sb.insert(pos, "<span><img src='" + imgUrl + "'></span>");
htmlEditor.setHtmlText(sb.toString());
于 2017-01-26T11:10:17.967 に答える