微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在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 举报,一经查实,本站将立刻删除。