2016-11-15 8 views
3

私はコードの一部を持っています。私はコンボボックスに自分のOS上にあるすべてのフォントを表示したい。フォントの名前は、各フォントの外観を示すプレビューのように見えるはずです。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 ?> 

誰もがこの問題で私を助けることができますか?

+0

あなたは私がそのようdefinied 'comboBox' –

+0

を定義した方法を示してください:@FXML 民間のComboBox コンボボックス。 – drewpol

+0

私のせいで、前にこれを見たことがない、ComboBoxにする必要があります drewpol

答えて

2

あなたの問題は、あなたのメンバ変数を定義してcomboBoxどのように関連して、あなたはあなたのコードの残りの部分はComboBoxのタイプとしてStringを期待しながら、不明なタイプ表しwildcardを使用して定義されました。

だから、単に次のように定義する:

@FXML private ComboBox<String> comboBox; 
関連する問題