Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFXWebView调整大小问题_Java_Javafx_Webview - Fatal编程技术网

JavaFXWebView调整大小问题

JavaFXWebView调整大小问题,java,javafx,webview,Java,Javafx,Webview,如何正确调整web视图的大小?当窗口缩小到更小的尺寸时,它似乎会将WebView推到帧的末尾,而不会实际调整大小。如何正确地调整窗口的大小并使WebView适合框架 public class OuroborosViewer extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) { stage.

如何正确调整web视图的大小?当窗口缩小到更小的尺寸时,它似乎会将WebView推到帧的末尾,而不会实际调整大小。如何正确地调整窗口的大小并使WebView适合框架

public class OuroborosViewer extends Application {

public static void main(String[] args) {
    launch(args);
}

@Override
public void start(Stage stage) {
    stage.setTitle("Ouroboros");
    Scene scene = new Scene(new VBox(), 1920, 1080);
    scene.setFill(Color.OLDLACE);

    MenuBar menuBar = new MenuBar();
    Menu menuFile = new Menu("File");
    Menu menuEdit = new Menu("Edit");
    Menu menuView = new Menu("View");

    menuBar.getMenus().addAll(menuFile, menuEdit, menuView);
    ((VBox) scene.getRoot()).getChildren().addAll(menuBar);

    BorderPane borderPane = createTab(scene);
    ((VBox) scene.getRoot()).getChildren().add(borderPane);

    scene.widthProperty().addListener(new WidthListener());
    scene.heightProperty().addListener(new HeightListener());
    //  stage.getIcons().add(new Image("Ouroboros.svg"));
    stage.setScene(scene);
    try {
        sleep(500);
    } catch (InterruptedException ex) {
        Logger.getLogger(OuroborosViewer.class.getName()).log(Level.SEVERE, null, ex);
    }

    stage.show();
}

private BorderPane createTab(Scene scene) {
    TabPane tabPane = new TabPane();
    BorderPane borderPane = new BorderPane();

    Tab tab = new Tab();
    tab.setText("Google");
    //VBox hbox = new VBox(new BrowserToolbar(scene), new OuroborosBrowser(scene));
    VBox vbox = new VBox();
    BrowserToolbar toolbar = new BrowserToolbar(scene);
    OuroborosBrowser ob = new OuroborosBrowser(scene);
    VBox.setVgrow(toolbar, Priority.ALWAYS);
    VBox.setVgrow(ob, Priority.ALWAYS);
    vbox.getChildren().addAll(toolbar, ob);
    vbox.autosize();

    tabPane.getTabs().add(tab);
    tab.setContent(vbox);
    borderPane.setTop(tabPane);
    return borderPane;
}

private static class WidthListener implements ChangeListener<Number> {

    @Override
    public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneWidth, Number newSceneWidth) {
        OuroborosBrowser.browsers[0].setPrefWidth(newSceneWidth.doubleValue());
        BrowserToolbar.URLBars[0].setPrefWidth(newSceneWidth.doubleValue() - 115);
        BrowserToolbar.toolBars[0].setPrefWidth(newSceneWidth.doubleValue());
    }
}

private static class HeightListener implements ChangeListener<Number> {

    @Override
    public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneHeight, Number newSceneHeight) {
        if (oldSceneHeight != newSceneHeight) {
            try {
                OuroborosBrowser.browsers[0].setPrefHeight(newSceneHeight.doubleValue()
                        + OuroborosBrowser.browsers[0].getScene().getRoot().getChildrenUnmodifiable()
                                .get(0).prefHeight(0));
            } catch (Exception ex) {

            }
        }
    }
}
公共类OuroboroViewer扩展应用程序{
公共静态void main(字符串[]args){
发射(args);
}
@凌驾
公众假期开始(阶段){
舞台名称(“大毒蛇”);
场景=新场景(新VBox(),1920,1080);
场景。设置填充(颜色。旧花边);
菜单栏菜单栏=新建菜单栏();
菜单菜单文件=新菜单(“文件”);
菜单菜单编辑=新菜单(“编辑”);
菜单菜单视图=新菜单(“视图”);
menuBar.getMenus().addAll(menuFile、menuEdit、menuView);
((VBox)scene.getRoot()).getChildren().addAll(菜单栏);
BorderPane BorderPane=createTab(场景);
((VBox)scene.getRoot()).getChildren().add(borderPane);
scene.widthProperty().addListener(新的WidthListener());
scene.heightProperty().addListener(新的HeightListener());
//stage.getIcons().add(新图像(“Ouroboros.svg”);
舞台场景;
试一试{
睡眠(500);
}捕获(中断异常例外){
Logger.getLogger(OuroborosViewer.class.getName()).log(Level.SEVERE,null,ex);
}
stage.show();
}
专用边界窗格createTab(场景){
TabPane TabPane=新建TabPane();
BorderPane BorderPane=新的BorderPane();
Tab Tab=新选项卡();
tab.setText(“谷歌”);
//VBox hbox=新VBox(新浏览器工具栏(场景)、新OuroboroBrowser(场景));
VBox VBox=新的VBox();
BrowserToolbar=新建BrowserToolbar(场景);
OuroborosBrowser ob=新的OuroborosBrowser(场景);
setVgrow(工具栏,Priority.ALWAYS);
VBox.setVgrow(ob,Priority.ALWAYS);
vbox.getChildren().addAll(工具栏,ob);
vbox.autosize();
tabPane.getTabs().add(tab);
tab.setContent(vbox);
边框窗格.setTop(选项卡窗格);
返回边框窗格;
}
私有静态类WidthListener实现ChangeListener{
@凌驾

更改公众假期(ObservalevalueHello,如果你说编译后,即使你最初给了较大的窗格大小,它也会显示较小的窗口。然后,当你将其导出到可执行的jar文件时,不要担心,那么你的窗口将自动与窗格的大小相同,例如fxml中的Ancorpane大小。你可以使用场景bui增加窗格的大小我也是:)您没有正确使用布局。请删除HBox和VBox的所有用法,删除WidthListener和HeightListener,删除对setPrefWidth的所有调用,不要将场景传递给其他类,并使用边框窗格使控件拉伸以填充空间。您好,如果您说在编译后,即使最初,您已将窗格大小设置为更大。然后,当您将其导出到可执行jar文件时,请不要担心,然后,您的窗口将自动达到窗格的大小,例如,fxml中的Ancorpane大小。您也可以使用场景生成器增加窗格的大小:)您没有正确使用布局。请删除HBox和VBox的所有用法,删除WidthListener和HeightListener,删除对setPrefWidth的所有调用,不要将场景传递给其他类,并使用边框窗格使控件拉伸以填充空间。
class OuroborosBrowser extends Region {
public static int browserCounter = 0;
public static WebView[] browsers = new WebView[25];
private static WebView browser = new WebView();
final WebEngine webEngine = browser.getEngine();


public OuroborosBrowser(Scene scene) { 
    browser.setPrefSize(scene.getWidth(), scene.getHeight());
    webEngine.load("http://www.google.com/index.html");
    getChildren().add(browser);
    browsers[browserCounter] = browser;
    browserCounter++;
}
}



public class BrowserToolbar extends Region {

public static TextField[] URLBars = new TextField[25];
public static ToolBar[] toolBars = new ToolBar[25];
public static int barCounter = 0;

public BrowserToolbar(Scene scene) {
    Button backButton = new Button("  <  ");
    Button forwardButton = new Button("  >  ");
    TextField URLbar = new TextField();
    URLbar.setPrefWidth(scene.getWidth() - 115);
    URLBars[barCounter] = URLbar;
    URLbar.setPrefWidth(2000);
    final ToolBar toolbar = new ToolBar(
            backButton, forwardButton, URLbar);
    toolbar.setPrefWidth(2000);
    toolBars[barCounter] = toolbar;
    barCounter++;

    HBox hb = new HBox();
    hb.getChildren().add(toolbar);
    hb.setPrefWidth(scene.getWidth());
    hb.autosize();
    getChildren().add(hb);
}
}