Sai*_*ula 6 java javafx javafx-8
我正在开发一个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);
}
}
Run Code Online (Sandbox Code Playgroud)
我的应用截图:

当我使用TextArea时,它只显示纯HTML代码,而不是将HTML转换为Text.我必须使用哪种控件才能完成此操作?
PS:我尝试过TextFlow,但它无法正常工作,因为我需要为所需的文本显示不同的样式和字体大小.
我也看了WebView,但不明白它是如何解决上述问题的.
Jam*_*s_D 13
使用Web视图:
@FXML
private WebView fontWebView ;
// ...
public void changeFont() {
StringBuilder sb = new StringBuilder(fontText);
for (int i = 0; i < fontSizes.length; i++) {
sb.append("<p style='font-family:")
.append(fontListView.getSelectionModel().getSelectedItem())
.append(";font-size:")
.append( fontSizes[i])
.append("'>This is Sample Text</p>");
}
fontText = sb.toString();
fontWebView.getEngine().loadContent(fontText);
}
Run Code Online (Sandbox Code Playgroud)