在javafx中更新组合框中的文本字体

时间:2016-11-15 15:26:55

标签: java javafx

我有一部分代码。我想在组合框中显示我在操作系统上的所有字体。然后,字体名称应该看起来像预览,显示每种字体的外观。这是我的代码:

List<String> families = Font.getFamilies();
fontfamilies = FXCollections.observableArrayList(families);
comboBox.setItems(fontfamilies);
comboBox.getSelectionModel().select(0);

comboBox.setCellFactory((ListView<String> listView) -> {
    final ListCell<String> cell = new ListCell<String>() {
        @Override
        public void updateItem(String item, boolean empty) {
            super.updateItem(item, empty);
            if (item != null) {
                setText(item);
                setFont(new Font(item, 12));
            }
        }
    };
    //cell.setPrefWidth(120);
    return cell;
});

但是我收到了这个错误:

Error:(59, 20) java: incompatible types: bad return type in lambda expression
javafx.scene.control.ListCell<java.lang.String> cannot be converted to javafx.scene.control.ListCell<capture#1 of ?>

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

您的问题与您定义成员变量comboBox的方式有关,您使用代表未知类型wildcard来定义它,而其余代码期望String ComboBox 1}}为@FXML private ComboBox<String> comboBox; 的类型。

所以简单地将其定义为下一个:

<img src="<?php echo base_url('assests/images/logo.png'); ?>" alt="" />