如何在java中设置适合窗口的webview?

问题描述

如何设置 webview 适合窗口?

如果我调整屏幕大小或最大化屏幕,webview 不适合窗口。

我的代码

import com.sun.javafx.application.PlatformImpl;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javafx.application.Platform;
import javafx.collections.ObservableList;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

/**
 * SwingFXWebView
 */
public class SwingFXWebView extends JPanel {

    private Stage stage;
    private WebView browser;
    private JFXPanel jfxPanel;
    private JButton swingButton;
    private WebEngine webEngine;

    public SwingFXWebView(){
    super(new BorderLayout());
    initComponents();
    }

   public static void main(String ...args){
    // Run this later:
    SwingUtilities.invokelater(new Runnable() {
        @Override
        public void run() {
            final JFrame frame = new JFrame();

            frame.getContentPane().add(new SwingFXWebView());

            frame.setMinimumSize(new Dimension(640,480));
            frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
    });
 }

 private void initComponents(){

    jfxPanel = new JFXPanel();
    createScene();

    setLayout(new BorderLayout());
    add(jfxPanel,BorderLayout.CENTER);

    swingButton = new JButton();
    swingButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            Platform.runLater(new Runnable() {

                @Override
                public void run() {
                    webEngine.reload();
                }
            });
        }
    });
    swingButton.setText("Reload");

    add(swingButton,BorderLayout.soUTH);
   }

  /**
  * createScene
  *
  * Note: Key is that Scene needs to be created and run on "FX user thread"
  *       NOT on the AWT-EventQueue Thread
  *
   */
  private void createScene() {
    PlatformImpl.startup(new Runnable() {
        @Override
        public void run() {

            stage = new Stage();

            stage.setTitle("Hello Java FX");
            stage.setResizable(true);

            Group root = new Group();
            Scene scene = new Scene(root,80,20);
            stage.setScene(scene);

            // Set up the embedded browser:
            browser = new WebView();
            webEngine = browser.getEngine();
            webEngine.load("https://www.google.com/");

            ObservableList<Node> children = root.getChildren();
            children.add(browser);

            jfxPanel.setScene(scene);
        }
    });
}
}

如果我最大化 webview 它是这样的

screen shot

如果我调整屏幕大小或最大化屏幕,webview 不适合窗口。

如果我调整窗口大小或最大化窗口,我想将 webview 设置为适合屏幕。

我该如何解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)