Acredito que as propriedades são definidas igualmente em ambos. Na grade "correct.fxml", se eu adicionar 1 linha ou 1 coluna, a barra de rolagem do respectivo ScrollPane aparece. Na grade "wrong.fxml" isso não acontece e não consigo descobrir o porquê. Talvez eu não esteja vendo algo diferente entre eles. Obrigado por qualquer ajuda.
Correto.fxml
Errado.fxml
Correto.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.layout.StackPane?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="429.0"
prefWidth="761.0" stylesheets="@stylesheet.css" xmlns="http://javafx.com/javafx/22"
xmlns:fx="http://javafx.com/fxml/1">
<center>
<ScrollPane BorderPane.alignment="CENTER">
<content>
<StackPane>
<children>
<Pane StackPane.alignment="CENTER">
<children>
<GridPane alignment="CENTER" hgap="1.0" vgap="1.0">
<columnConstraints>
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="40.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="40.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="40.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="40.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="100.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="100.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="100.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="100.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="100.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="100.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="100.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="100.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="100.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="100.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="100.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="100.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="100.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="40.0" minHeight="40.0"
prefHeight="40.0" valignment="CENTER" vgrow="NEVER" />
<RowConstraints maxHeight="40.0" minHeight="40.0"
prefHeight="40.0" valignment="CENTER" vgrow="NEVER" />
<RowConstraints maxHeight="40.0" minHeight="40.0"
prefHeight="40.0" valignment="CENTER" vgrow="NEVER" />
<RowConstraints maxHeight="40.0" minHeight="40.0"
prefHeight="40.0" valignment="CENTER" vgrow="NEVER" />
<RowConstraints maxHeight="40.0" minHeight="40.0"
prefHeight="40.0" valignment="CENTER" vgrow="NEVER" />
<RowConstraints maxHeight="40.0" minHeight="40.0"
prefHeight="40.0" valignment="CENTER" vgrow="NEVER" />
<RowConstraints maxHeight="40.0" minHeight="40.0"
prefHeight="40.0" valignment="CENTER" vgrow="NEVER" />
<RowConstraints maxHeight="40.0" minHeight="40.0"
prefHeight="40.0" valignment="CENTER" vgrow="NEVER" />
<RowConstraints maxHeight="40.0" minHeight="40.0"
prefHeight="40.0" valignment="CENTER" vgrow="NEVER" />
<RowConstraints maxHeight="40.0" minHeight="40.0"
prefHeight="40.0" valignment="CENTER" vgrow="NEVER" />
</rowConstraints>
</GridPane>
</children>
</Pane>
</children>
</StackPane>
</content>
</ScrollPane>
</center>
</BorderPane>
Errado.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.layout.StackPane?>
<BorderPane prefHeight="277.0" prefWidth="495.0" xmlns="http://javafx.com/javafx/22"
xmlns:fx="http://javafx.com/fxml/1"
fx:controller="br.com.ablogic.crossword.MainViewController">
<center>
<ScrollPane fx:id="scpGrid" fitToHeight="true" fitToWidth="true"
focusTraversable="false" BorderPane.alignment="CENTER">
<content>
<StackPane fx:id="stkPane">
<children>
<Pane fx:id="pane" StackPane.alignment="CENTER">
<children>
<GridPane alignment="CENTER" hgap="1.0" vgap="1.0">
<columnConstraints>
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="40.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="40.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="40.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="40.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="40.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="40.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="40.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="40.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="40.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="40.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="40.0" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER"
maxWidth="40.0" minWidth="40.0" prefWidth="40.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="40.0" minHeight="40.0"
prefHeight="40.0" valignment="CENTER" vgrow="NEVER" />
<RowConstraints maxHeight="40.0" minHeight="40.0"
prefHeight="40.0" valignment="CENTER" vgrow="NEVER" />
<RowConstraints maxHeight="40.0" minHeight="40.0"
prefHeight="40.0" valignment="CENTER" vgrow="NEVER" />
<RowConstraints maxHeight="40.0" minHeight="40.0"
prefHeight="40.0" valignment="CENTER" vgrow="NEVER" />
<RowConstraints maxHeight="40.0" minHeight="40.0"
prefHeight="40.0" valignment="CENTER" vgrow="NEVER" />
<RowConstraints maxHeight="40.0" minHeight="40.0"
prefHeight="40.0" valignment="CENTER" vgrow="NEVER" />
</rowConstraints>
</GridPane>
</children>
</Pane>
</children>
</StackPane>
</content>
</ScrollPane>
</center>
</BorderPane>
Na versão "incorreta", você tem
fitToWidth="true"
efitToHeight="true"
na declaração do seuScrollPane
.Isso forçará o conteúdo do painel de rolagem a se ajustar à largura da viewport e à altura da viewport, de modo que ele nunca poderá ser maior que a viewport e, consequentemente, as barras de rolagem nunca poderão aparecer. Veja a documentação para essas propriedades .
A versão "correta" do seu FXML não tem essas configurações, então o conteúdo (geralmente) será dimensionado para o tamanho preferido, permitindo que as barras de rolagem apareçam quando necessário.
Há muitas outras anomalias no código. Por exemplo, algumas das suas restrições de coluna têm
minWidth="40" maxWidth="40" prefWidth="100"
, o que obviamente não faz sentido. Normalmente não é uma boa ideia codificar esses tamanhos (ou, de fato, o tamanho doBorderPane
, que também é diferente entre suas duas versões) de qualquer maneira: usepercentWidth
se quiser forçar todas as colunas a terem a mesma largura. (Há outras maneiras de fazer isso também.) Você também tem elementos completamente redundantes no FXML noPane
eStackPane
ao redor doGridPane
.