有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java印地语字体在使用javafx的webview浏览器上呈现不正确

我正在JavaFX2.0中使用webview组件。问题是,web视图在web视图中未正确呈现印地语字体。相同的代码在某些系统中正确呈现,但在其他系统上不正确呈现。所以请给我一些建议。或者是否有webview的替代方案

以下是我用来呈现印地语字体的javafx代码:-

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;


public class TestWebView extends Application {

  public void start(Stage primaryStage) {

     WebView myBrowser = new WebView();

      WebEngine myWebEngine = myBrowser.getEngine();
      myWebEngine.load("http://www.jagran.com/");

      StackPane root = new StackPane();
      root.getChildren().add(myBrowser);
      primaryStage.setScene(new Scene(root, 100, 100));
      primaryStage.show();
  }

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

}

共 (2) 个答案

  1. # 1 楼答案

    您可以使用jxbrower解决此问题。请看这个例子

    import com.teamdev.jxbrowser.chromium.Browser;
    import com.teamdev.jxbrowser.chromium.javafx.BrowserView;
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.layout.StackPane;
    import javafx.stage.Stage;
    
    /**
     * Demonstrates how to embed Browser instance into JavaFX application.
     */
    public class JavaFXSample extends Application {
    
        @Override
        public void start(Stage primaryStage) {
            Browser browser = new Browser();
            BrowserView browserView = new BrowserView(browser);
    
            StackPane pane = new StackPane();
            pane.getChildren().add(browserView);
            Scene scene = new Scene(pane, 700, 500);
            primaryStage.setScene(scene);
            primaryStage.show();
    
            browser.loadURL("http://www.google.com");
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }
    
  2. # 2 楼答案

    您可以使用:

    1.)JCEF>https://bitbucket.org/chromiumembedded/java-cef

    (二)使用java8,如果您使用的是java7,那么只有您面临这个问题

    package javafxapplication5;
    
    import java.io.IOException;
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.layout.StackPane;
    import javafx.scene.web.WebEngine;
    import javafx.scene.web.WebView;
    import javafx.stage.Stage;
    
    public class JavaFXApplication5 extends Application {
        @Override
        public void start(Stage stage) throws Exception {
            StackPane root = new StackPane();
    
            WebView view = new WebView();
            WebEngine engine = view.getEngine();
            engine.load("http://www.jagran.com/");
            root.getChildren().add(view);
    
            Scene scene = new Scene(root, 800, 600);
            stage.setScene(scene);
            stage.show();
        }
    
        public static void main(String[] args) throws IOException {
            Application.launch(args);
        }
    }
    

    这对我有用