JavaFX 浏览器 - 在 ListView 中显示条目的 getTitle()
JavaFX Browser - display entry's getTitle() in ListView
我需要向我的 JavaFX 网络浏览器添加显示历史记录功能。
我有:
将历史记录作为 ObservableList 的方法:
public static ObservableList<Entry> getHistoryList() {
WebHistory history = MyJavaFXBrowser.getWebEngine().getHistory();
ObservableList<Entry> entries = history.getEntries();
return entries;
}
并转换为 ListView
public static ListView<Entry> getHistoryPane() {
return new ListView<Entry>(getHistoryList());
}
如何只显示 Entry.getTitle() - 而不是全部信息。
如果我将方法更改为:
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 的方法?
使用细胞工厂:
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 ;
}
我需要向我的 JavaFX 网络浏览器添加显示历史记录功能。 我有: 将历史记录作为 ObservableList 的方法:
public static ObservableList<Entry> getHistoryList() {
WebHistory history = MyJavaFXBrowser.getWebEngine().getHistory();
ObservableList<Entry> entries = history.getEntries();
return entries;
}
并转换为 ListView
public static ListView<Entry> getHistoryPane() {
return new ListView<Entry>(getHistoryList());
}
如何只显示 Entry.getTitle() - 而不是全部信息。
如果我将方法更改为:
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 的方法?
使用细胞工厂:
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 ;
}