Как получить заголовок JavaFx TabPane в качестве заголовка сайта WebView? - PullRequest
0 голосов
/ 10 января 2020

Я использую JavaFx, и у меня есть вкладки с объектами WebView на них. Я пытаюсь получить текст заголовка моей вкладки для чтения заголовка веб-страницы, как в большинстве веб-браузеров. Когда я использую метод "getTitle", я получаю пустой заголовок, который я предполагаю, потому что страница еще не загружена. Все исследования, которые я провел, дают мне решение Android, и я ищу что-то, что работает с настольным приложением. Вот что у меня есть.

public class WebsiteTab extends Tab {

    final static String DEFAULT_SITE = "https://google.com";

    VBox browserBox;
    WebView webView;

    public WebsiteTab() {
        super("Site One");
        webView = new WebView();
        webView.setPrefHeight(5000);

        goToSite(DEFAULT_SITE);

        browserBox = new VBox(10,webView);
        VBox.setVgrow(browserBox, Priority.ALWAYS);

        setContent(browserBox);
    }

    public void goToSite(final String site) {
        webView.getEngine().load(site);
        setText(webView.getEngine().getTitle());
    }
}

Любая помощь будет оценена.

1 Ответ

3 голосов
/ 10 января 2020

Вы можете привязать свойство text вкладки к свойству title веб-движка.

public class WebsiteTab extends Tab {

    final static String DEFAULT_SITE = "https://google.com";

    VBox browserBox;
    WebView webView;

    public WebsiteTab() {
        super("Site One");
        webView = new WebView();
        webView.setPrefHeight(5000);

        textProperty().bind(webView.getEngine().titleProperty()); // bind the properties

        goToSite(DEFAULT_SITE);

        browserBox = new VBox(10,webView);
        VBox.setVgrow(browserBox, Priority.ALWAYS);

        setContent(browserBox);
    }

    public void goToSite(final String site) {
        webView.getEngine().load(site);
    }
}

Это приведет к тому, что свойство text всегда будет иметь то же значение, что и свойство title. Другими словами, при изменении значения свойства title свойство text будет автоматически обновлено. Обратите внимание, что я связываю свойства в конструкторе, так как вам нужно создать привязку только один раз. Также обратите внимание, что во время привязки вы больше не можете вручную устанавливать свойство text; попытка сделать это вызовет исключение. Для получения дополнительной информации см. Использование свойств JavaFX и привязка .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...