2017-12-28 45 views
0

JavaFX 웹 브라우저에 표시 내역 기능을 추가해야합니다. ObservableList로 역사를 얻을 수 방법 : 내가 가진JavaFX 브라우저 - ListView에 항목의 getTitle()을 표시합니다.

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

을하고 난 단지 Entry.getTitle()를 표시 할 수있는 방법 ListView에

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의 메서드에 액세스하려면 어떻게해야합니까?

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 ; 
} 
:

답변

2

는 셀 공장을 사용하여