如何在JavaFX应用程序中显示HTML
我正在开发一个FontViewer应用程序,它根据选定的字体样式更改文本的字体 这是我的应用程序的控制器类如何在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
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
,不带任何参数。(如果这被认为是错误的,那么很抱歉。)