簡體   English   中英

如何從JPanel調整子WebView / JFXPanel的大小,而不是每次都加載URL?

[英]How to resize the children WebView/JFXPanel from the JPanel without loading URL every time?

我在TabbedPane有一個JPanel ,它包含一個帶有WebViewJFXPanel ,我在面板上設置了一個ComponentListener ,以便每次調整面板大小時調整其子JFXPanelWebView大小。 我想要的是每次調整面板大小時,URL(網站)中的內容都不會被加載。 我希望內容保持加載狀態,只是調整大小。

正在加載的內容是網站的主頁,例如當我調整面板大小時,我被重定向到該主頁,我設置為URL並且我不想丟失頁面,我當前打開。

避免重新加載的第二個原因是有時它會持續幾秒鍾,我想避免這種過載。

我最初嘗試使用靜態變量以便只打開一次URL,但是在調整大小時,頁面不再顯示...只出現一個白頁。

這是代碼:

public class RtcOverview extends JPanel {

String url = "http://10.112.85.142:8080/petshopJSF/";

public RtcOverview() {
    super();
    this.setVisible(true);
    this.doLayout();
    this.add(jfxPanel);
    this.addComponentListener(new java.awt.event.ComponentAdapter() {
        public void componentResized(ComponentEvent e) {
            initComponents();
        }
    });
}

private void initComponents() {
    Platform.runLater(new Runnable() {
        @Override
        public void run() {
            final WebView view = new WebView();
            int width = getParent().getWidth();
            int height = getParent().getHeight();

            view.setMinSize(width, height);
            view.setPrefSize(width, height);

            engine = view.getEngine();
            engine.load(url);

            Scene scene = new Scene(view);
            jfxPanel.setScene(scene);

            Platform.setImplicitExit(false);
        }
    });
}
}

安德魯湯普森在上面的評論中給了我這個答案。 每次調整JPanel大小時都不需要調用initComponents()方法。 而不是使用這個塊

this.addComponentListener(new java.awt.event.ComponentAdapter() {
    public void componentResized(ComponentEvent e) {
        initComponents();
    }
});

我使用了以下內容

this.setLayout(new BorderLayout());

this.add(jfxPanel, BorderLayout.CENTER);

它起作用了。 JFXPanel會像其父JPanel一樣調整大小,而無需再次加載url並且每次都初始化所有變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM