javafx Ottieni la cronologia delle pagine di una WebView


Esempio

WebHistory history = webView.getEngine().getHistory();

La cronologia è fondamentalmente una lista di voci. Ogni voce rappresenta una pagina visitata e fornisce l'accesso alle informazioni sulla pagina rilevanti, come l'URL, il titolo e la data di ultima visita della pagina.

L'elenco può essere ottenuto utilizzando il metodo getEntries() . La cronologia e l'elenco di voci corrispondente cambiano man WebEngine che WebEngine naviga sul Web. L'elenco può espandersi o restringersi in base alle azioni del browser. Queste modifiche possono essere ascoltate dall'API ObservableList che l'elenco espone.

L'indice della voce della cronologia associata alla pagina attualmente visitata è rappresentato da currentIndexProperty() . L'indice corrente può essere utilizzato per navigare a qualsiasi voce nella cronologia utilizzando il metodo go(int) . maxSizeProperty() imposta la dimensione massima della cronologia, che è la dimensione dell'elenco cronologico

Di seguito è riportato un esempio di come ottenere ed elaborare l'elenco degli elementi della cronologia Web .

Un ComboBox (comboBox) viene utilizzato per memorizzare gli elementi della cronologia. Usando ListChangeListener su WebHistory il ComboBox viene aggiornato alla WebHistory corrente. Sul ComboBox è un EventHandler che reindirizza alla pagina selezionata.

final WebHistory history = webEngine.getHistory();

comboBox.setItems(history.getEntries());
comboBox.setPrefWidth(60);
comboBox.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent ev) {
        int offset =
                comboBox.getSelectionModel().getSelectedIndex()
                - history.getCurrentIndex();
        history.go(offset);
    }
});

history.currentIndexProperty().addListener(new ChangeListener<Number>() {

    @Override
    public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
        // update currently selected combobox item
        comboBox.getSelectionModel().select(newValue.intValue());
    }
});

// set converter for value shown in the combobox:
//   display the urls
comboBox.setConverter(new StringConverter<WebHistory.Entry>() {

    @Override
    public String toString(WebHistory.Entry object) {
        return object == null ? null : object.getUrl();
    }

    @Override
    public WebHistory.Entry fromString(String string) {
        throw new UnsupportedOperationException();
    }
});