Pessoal, tenho um Stage definido com 800 x 600. A Scene com o mesmo tamanho. Um VBox que vai na Scene
que contem um Botão, um TableView e um Label. Ocorre que ainda sobra um bom espaço abaixo do Label, que
é o ultimo element do VBox. Eu queria que o VBox ocupasse toda a area do Stage/Scene. Tentei definer o
tamanho do VBox como abaixo, mas o cenario não muda (continua um bom espaço vazio entre o fim do VBox e
o fim do Stage/Scene).
Usei o seguinte pra tentar “forçar” o tamanho vertical (altura) do VBox:
VBox.setMinHeight(600);
Vcs conseguem ajudar? Grato.
Olá, talvez seu vbox esteja ocupando toda a tela mas você não está vendo, use o código abaixo para ver se seu vbox ocupa toda a área do Stage, se o stage ficar todo vermelho ele está ocupando (supondo que o vbox é o painel root do seu stage).
meuVbox.setStyle("-fx-background-color: red");
Caso o vbox estaja ocupando corretamete toda a área do Stage, seu problema pode ser somente uma questão de posicionamento dos componentes, nesse caso use o setAligment do seu Vbox para definir o posicionamento dos seus filhos.
meuVbox.setAlignment(Pos.CENTER);
De toda forma sem ver o código fica difícil adivinhar o problema.
Andrauss, obrigado. Você ajudou a resolver mais este problema.
Inseri a instrução para colocar vermelho no fundo do VBox e, de fato, o VBox está
ocupando todo o Stage/Scene. Inclui tb a instrução para centralizar, mas a única mudança foi a
centralização (na horizontal) dos elementos (Botão, TableView e Label). O TableView continuava mostrando
apenas 16 rows. E o que eu queria é que o TableView ocupasse toda a area livre do Stage/Scene, o que implicaria em
mostrar algo como 22 ou 23 rows. Entendi então que a limitação, por algum motivo, estava no TableView e não
no VBox. Busquei no DOCs do TableView e vi a instrução “minhaTableView.setMinHeight(nnn)”. Isto resolveu o
problema. Muito obrigado novamente.
Olá, agora que entendi seu problema fica mais fácil ajudar. Você resolveu o problema pontualmente, entretanto se a janela for redimensionada a tabela não irá aumentar, pois seu tamanho é fixo. Existe uma forma mais eficiente de fazer o tableview ou qualquer outro componente ocupar o espaço restante, utilizando vgrow, veja abaixo como fazer no scene builder:
Para fazer via código:
VBox.setVgrow(minhaTabela, Priority.ALWAYS);
Andrauss, obrigado. Vou aplicar ao código. Grato.