当前位置: 首页 > 知识库问答 >
问题:

如何在窗口最大化时自动调整JavaFX容器的大小?

郭阳泽
2023-03-14

基本上,我有以下文件:

<?xml version="1.0" encoding="UTF-8"?>

<?import com.jfoenix.controls.JFXButton?>
<?import com.jfoenix.controls.JFXTabPane?>
<?import com.jfoenix.controls.JFXTreeView?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Separator?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.StackPane?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?>

   <BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="566.0" prefWidth="753.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gui.controller">
    <center>
        <JFXTabPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" BorderPane.alignment="CENTER">
            <tabs>
                <Tab text="TAB">
                    <content>
                        <AnchorPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
                            <children>
                                <VBox maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="495.0" prefWidth="753.0">
                                    <children>
                                        <StackPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="150.0" prefWidth="200.0" VBox.vgrow="ALWAYS">
                                            <children>
                                                <HBox maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" nodeOrientation="LEFT_TO_RIGHT" prefHeight="100.0" prefWidth="200.0">
                                                    <children>
                                                        <JFXTreeView fx:id="treeView" />
                                                        <TableView  maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="277.0" prefWidth="753.0">
                                                            <columns>
                                                                <TableColumn maxWidth="-1.0" text="COL" />
                                                                <TableColumn text="COL" />
                                                                <TableColumn text="COL" />
                                                                <TableColumn text="COL" />
                                                                <TableColumn minWidth="0.0" text="COL" />
                                                                <TableColumn text="COL" />
                                                            </columns>
                                                            <columnResizePolicy>
                                                                <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
                                                            </columnResizePolicy>
                                                        </TableView>
                                                    </children>
                                                </HBox>
                                            </children>
                                        </StackPane>
                                    </children>
                                </VBox>
                            </children>
                        </AnchorPane>
                    </content>
                </Tab>
            </tabs>
        </JFXTabPane>
    </center>
</BorderPane>

加载FXML文档的主要类:

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class Main extends Application {

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

    @Override
    public void start(Stage primaryStage) throws Exception {

        BorderPane parent = (BorderPane)  FXMLLoader.load(getClass().getResource("document.fxml"));
        Scene scene = new Scene(parent);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

当我最大化窗口时,表和其他容器不会相应地调整大小。我尝试在SceneBuilder中将所有容器的最大宽度最大高度设置为max_value,但实际上什么也没有发生。

有没有一种方法可以自动扩展容器,使它们在窗口最大化时可以使用所有的空间?

共有1个答案

龙洛城
2023-03-14

在花了一些时间调查这个问题之后。纠正此问题的步骤是:1-将所有锚点窗格约束设置为0(在VBox标记中)将允许子容器占用父容器提供的所有空间。

<VBox AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">

2-将TabeView的hGrowt属性设置为Always将允许该表在找到空间时水平增长。3-对于其余容器,保留默认设置并将Max Height和Max Width设置为USE_COMPUTED_SIZE即可完成此操作。

 类似资料:
  • 我正在尝试构建一个包含6个窗格(作为父级添加到GridPane布局中)的简单Java项目。我必须在开始时设置窗口大小,并通过参考根布局的宽度和高度,设法将它们均匀地拆分。 但我想要他们调整大小,因为我改变了窗口的大小(使用鼠标,现在他们得到固定的大小)。 下面是我的代码:

  • 我有下面的代码,它设置了一个特定大小的窗口。它还从外部URL加载图像。

  • 问题内容: 我一直试图(徒劳地)建立一个页面,当我更改窗口大小时,其元素将重新调整大小。我可以在CSS中使用它来处理图像,但是没有问题,但是我似乎无法在文本上完成相同的操作,而且我不确定在CSS中是否有可能。而且我似乎找不到能完成此任务的jQuery脚本。 当用户调整窗口大小时,我实质上希望页面能够动态流畅地缩放,而无需用户调用页面缩放。通过css在我的img div上这可以正常工作,但对于文本则

  • 问题内容: 我正在使用Selenium Remote Control 。在执行测试期间,实际的Firefox窗口很小。我希望它全屏显示,以便可以看到发生了什么。如何最大化浏览器屏幕? 问题答案: 尝试使用windowMaximize命令: 您还可以使用以下命令设置特定的宽度和高度: 其中X是宽度,Y是高度。

  • 如题,我想在JavaFX中制作window,并使其永久最大化(即全屏)。 这是产生错误的示例代码…嗯,意外行为。 请注意 和 。一切正常,直到...我按 ⊞↓( ),此时我的窗口被调整大小,我无法再次最大化它。我正在Windows 10上运行NetBeans的代码。

  • 我的场景中有一个对象。我希望能够调整窗口的大小,并与它一起调整窗格的大小。我还想在窗格旁边放置一个。 到目前为止,我已经成功地生成了一个完全可调整大小的或一个,其中包含和对象,但当我调整窗口大小时,窗格不会随之调整大小。 以下是带有锚烷的FXML: 只有的版本基本上就是版本中使用的代码,但具有和属性。 如何制作一个场景,使其具有可调整大小的和?