如何在JavaFX应用程序中显示HTML

如何在JavaFX应用程序中显示HTML,java,javafx,javafx-8,Java,Javafx,Javafx 8,我正在开发一个FontViewer应用程序,它根据选定的字体样式更改文本的字体 这是我的应用程序的控制器类 public class FXMLDocumentController implements Initializable { @FXML private ListView fontListView; @FXML private TextArea fontTextArea; int[] fontSizes = {34, 28, 24, 20, 1

我正在开发一个FontViewer应用程序,它根据选定的字体样式更改文本的字体

这是我的应用程序的控制器类

public class FXMLDocumentController implements Initializable {

    @FXML
    private ListView fontListView;

    @FXML
    private TextArea fontTextArea;

    int[] fontSizes = {34, 28, 24, 20, 18, 16, 14, 12, 11, 10, 9, 8, 7, 6};

    String fontText = "";

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        ObservableList<String> fontsList = FXCollections.observableArrayList(Font.getFontNames());
        fontListView.setItems(fontsList);
    }

    @FXML
    public void handleMouseClickEvent(MouseEvent mouseEvent) {
        changeFont();
    }

    public void changeFont() {
        for (int i = 0; i < fontSizes.length; i++) {
            fontText += "<p style='font-family:" + fontListView.getSelectionModel().getSelectedItem() + ";font-size:" + fontSizes[i] + "'>" + "This is Sample Text</p>";
        }

        fontTextArea.setText(fontText);
    }
}
公共类FXMLDocumentController实现可初始化{
@FXML
私有ListView-fontListView;
@FXML
私人文本区fontTextArea;
int[]fontSizes={34,28,24,20,18,16,14,12,11,10,9,8,7,6};
字符串fontext=“”;
@凌驾
公共void初始化(URL、ResourceBundle rb){
ObservableList fontsList=FXCollections.observableArrayList(Font.getFontNames());
setItems(fontsList);
}
@FXML
公共无效handleMouseClickEvent(MouseeEvent MouseeEvent){
changeFont();
}
public void changeFont(){
对于(int i=0;i
@FXML
私有网络视图;
// ...
public void changeFont(){
StringBuilder sb=新的StringBuilder(fontText);
对于(int i=0;i这是示例文本

”); } fontText=sb.toString(); fontWebView.getEngine().loadContent(fontText); }
这是一个非常晚的答案,但我想把它传递给那些需要将字体应用于各种FX控件的人(正如我需要做的那样):

通过使用
TextArea
的setFont方法,可以在不使用
WebView
的情况下显示字体。这具有适用于大多数文本显示FX控件的优点,包括
按钮
文本字段
,等等,并且可以与下载的TTF或OTF文件一起使用

// examples create a 20 pt font
// system font
Font f = Font.font("SansSerif", Font.PLAIN, 20);
// TTF/OTF added to your project as a resource:
Font f = Font.loadFont(ClassLoader.getSystemClassLoader().getResourceAsStream("ResourceName"), 20);
// TTF/OTF loaded from a file dynamically... read the font file into an input stream, and:
Font f = Font.loadFont(inputStream, 20);
// to use:
fontTextArea.setFont(f);

注意:一些脚本TTF/OTF字体可以扩展到系统字体所适合的区域之上或之下,因此在使用下载的字体时进行适当的测试。

感谢您的工作,但每次我单击左侧的字体时,文本都会一个接一个地堆叠。i、 e.字体A文本后接字体B文本后接字体C等;是否可以在每次迭代时重置WebView内容,以便只有选定的字体文本在WebView上可见?我假设这是您想要的;这与你在原稿中编写的逻辑相同。只需将逻辑更改为按您所需的方式构建
fontText
。要获取不包含以前内容的新文本,只需初始化
StringBuilder
,不带任何参数。(如果这被认为是错误的,那么很抱歉。)