JavaFX BorderPane替换“中心”窗格的内容不是填充窗格

时间:2017-01-22 05:09:44

标签: layout javafx borderpane

我正在创建一个应用程序,其主要BorderPane在TOP中带有菜单栏。我想在选择特定菜单选项时更改CENTER内容。但是,当我这样做时,我加载到CENTER窗格的AnchorPane没有调整大小以填充CENTER窗格。它保持了它的首选尺寸。我已经尝试将其设置为USE_COMPUTED_SIZE,但这不会调整它以填充CENTER窗格。我还尝试在AnchorPane周围添加一个HBOX作为包装器(我对JavaFX UI设计还不熟悉),但这也没有用。

<BorderPane id="BorderPane" prefHeight="650.0" prefWidth="980.0" 
    xmlns="http://javafx.com/javafx/8.0.60" 
    xmlns:fx="http://javafx.com/fxml/1"  
    fx:controller="fileinventory.ApplicationFrameController">

<top><MenuBar BorderPane.alignment="CENTER">...</MenuBar></top>
<center><AnchorPane BorderPane.alignment="CENTER" /></center>
</BorderPane>

我使用主类中的以下调用加载要在CENTER中设置的窗格:

public void viewClients() {
    ViewClientsController dlg = 
            new ViewClientsController(this.bundle, this.rootLayout);
}

AnchorPane的实际控制器被加载到CENTER窗格。

public class ViewClientsController {

public ViewClientsController(ResourceBundle bundle, BorderPane layout) {
    FXMLLoader fxmlLoader = 
        new FXMLLoader(getClass().getResource("ViewClients.fxml"));
    fxmlLoader.setController(this);
    fxmlLoader.setResources(bundle);

    try {
        layout.setCenter(new AnchorPane((Parent) fxmlLoader.load()));
    } catch (Exception ignore) {}

我对JavaFX布局了解不多。我更像是一个后端人,所以我在这里有点亏。

0 个答案:

没有答案