我写了一个相对简单的测试类:
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)
...
我最初注意到的三件事是:
HTMLEditorSkin
有关,所以我尝试应用一个,但Eclipse告诉我这个类不是API。我如何使用它(如果我应该),如果是,我应该进行访问限制(因为JavaFX本身也不是API)?HTMLEditor
看起来没有重点,并且默认情况下没有选定的字体(我认为这是造成问题的地方。)HTMLEditorSkin
来自包层次结构com.sun.javafx
,而不是javafx
。然而,根据first example of Oracle's tutorial,我似乎正在做所有事情。
这里出了什么问题?感觉这可能是一个错误。
尝试过的解决方案和已经收到的答案:
setHtmlText
设置初始文字。setHtmlText("<body style='font-family: something;'>text</body>");
setStyle
设置样式。setStyle("-fx-font: 12 something");
答案 0 :(得分:0)
引发错误是因为由于存在错误,HtmlEditor
默认情况下不设置字体系列,当您开始输入时,没有选择字体,因此您将获得NPE
。请注意,如果在开始键入之前选择字体系列,则不会引发错误。
为了避免此错误升级到JDK 8u122。 (在Kubuntu 16.10
上使用jre-8u122-ea-bin-b04-linux-x64-25_oct_2016
)
P.S。我没有检查以前的版本。这可以在早期版本中修复,但它存在于8u111
。