JavaFXWebView调整大小问题
如何正确调整web视图的大小?当窗口缩小到更小的尺寸时,它似乎会将WebView推到帧的末尾,而不会实际调整大小。如何正确地调整窗口的大小并使WebView适合框架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.
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);
}
}