[英]How to resize the children WebView/JFXPanel from the JPanel without loading URL every time?
我在TabbedPane
有一個JPanel
,它包含一個帶有WebView
的JFXPanel
,我在面板上設置了一個ComponentListener
,以便每次調整面板大小時調整其子JFXPanel
和WebView
大小。 我想要的是每次調整面板大小時,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.