簡體   English   中英

具有JavaFX的HTMLEditor的NPE

[英]NPEs with JavaFX's HTMLEditor

我寫了一個相對簡單的測試類:

public class Main extends Application {

    @Override public void start(Stage stage) {
        BorderPane root = new BorderPane();
        Scene scene = new Scene(root, 400, 400);

        HTMLEditor editor = new HTMLEditor();
        root.setCenter(editor);

        Platform.runLater(editor::requestFocus);

        stage.setScene(scene);
        stage.show();
    }

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

}

如果運行此命令(編輯器將焦點放在編輯器上),則會看到此窗口看起來非常暗淡,如果輸入任何內容,我會立即收到NullPointerException

Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
    at com.sun.javafx.scene.web.skin.HTMLEditorSkin.applyTextFormatting(HTMLEditorSkin.java:1100)
    at com.sun.javafx.scene.web.skin.HTMLEditorSkin.lambda$new$3(HTMLEditorSkin.java:293)
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
...

在此處輸入圖片說明

我最初注意到的三件事是:

  1. 該錯誤似乎與HTMLEditorSkin有關,因此我嘗試應用一個,但Eclipse通知我該類不是API。 我該如何使用它(如果應該),如果可以,我應該設置訪問限制(因為JavaFX本身也不是API)?
  2. HTMLEditor看起來沒有重點, 默認情況下沒有選定的字體 (我認為這是引起問題的地方。)
  3. HTMLEditorSkin來自包層次結構com.sun.javafx而不是javafx

但是,看來我按照Oracle教程第一個示例正確地完成了所有操作。

這是怎么了? 感覺這可能是一個錯誤。


嘗試的解決方案和已經收到的答案:

  1. 使用setHtmlText設置初始文本。
    setHtmlText("<body style='font-family: something;'>text</body>");
    它確實設置了文本和字體,但編輯器不受影響。
  2. setStyle設置樣式。
    setStyle("-fx-font: 12 something");
    這只會更改UI字體。
  3. 安裝JDK 8u122。

出現此錯誤是因為由於存在錯誤, HtmlEditor默認不設置字體系列,並且在您開始鍵入時沒有選擇字體,因此您將獲得NPE 請注意,如果在開始鍵入之前選擇了字體系列,則不會出現錯誤。

為了避免此錯誤,請升級到JDK 8u122 (在Kubuntu 16.10使用jre-8u122-ea-bin-b04-linux-x64-25_oct_2016

PS我沒有檢查以前的版本。 這可能已在較早的發行版中修復,但存在於8u111

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM