2017-12-28 21 views
0

JavaFX Webブラウザに表示履歴機能を追加する必要があります。 私が持っている:ObservableListとしての歴史を取得する 方法:JavaFXブラウザ - ListViewのエントリのgetTitle()を表示

public static ObservableList<Entry> getHistoryList() { 
    WebHistory history = MyJavaFXBrowser.getWebEngine().getHistory(); 
    ObservableList<Entry> entries = history.getEntries(); 
    return entries; 
} 

をし、どのように私はEntry.getTitle()表示することができます

public static ListView<Entry> getHistoryPane() { 
    return new ListView<Entry>(getHistoryList()); 
} 

リストビューに変換する - ではない完全な情報を。 enter image description here

私はこれに私の方法を変更した場合:私は、自動的にページを変更したとき、それは歴史を更新しません

public static ObservableList<String> getHistoryListTitles(){ 
     WebHistory history = MyJavaFXBrowser.getWebEngine().getHistory(); 
     ObservableList<Entry> entries = history.getEntries(); 
     ObservableList<String> titles = FXCollections.observableArrayList();; 
     for (Entry entry: entries) { 
      titles.add(entry.getTitle()); 
     } 

     return titles; 
    } 

ListViewでObservableListのメソッドにアクセスするにはどうすればよいですか?

答えて

2

は、セルファクトリを使用します。

public static ListView<Entry> getHistoryPane() { 
    ListView<Entry> historyPane = new ListView<Entry>(getHistoryList()); 

    historyPane.setCellFactory(lv -> new ListCell<Entry>() { 
     @Override 
     protected void updateItem(Entry entry, boolean empty) { 
      super.updateItem(entry, empty); 
      setText(entry == null ? null : entry.getTitle()); 
     } 
    }); 

    return historyPane ; 
} 
関連する問題