2016-04-29 130 views
1

我想在VBox上工作,我想用最多5个包含多达5个按钮的HBox填充。 另外我需要这些按钮可调整大小,但我无法完成。 已经试图用静态方法返回一个HBox中,从用按钮填充整个场景JavaFX

primaryStage.getChildren.addAll(hBoxMethod()); 

帮助称其将是非常赞赏:)

+2

请向我们展示您尝试过什么 – Mostafiz

回答

2

不清楚自己尽力去做。但是如果你想用5x5自动调整大小的按钮来填充你的屏幕(如标题所示):为什么不使用GridPane和AnchorPanes的组合来调整大小。

package sample; 

import javafx.application.Application; 
import javafx.scene.Node; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.*; 
import javafx.stage.Stage; 

public class Main extends Application { 

    @Override 
    public void start(Stage primaryStage) throws Exception{ 
     AnchorPane rootPane = new AnchorPane(); 
     Scene scene = new Scene(rootPane, 400, 300); 

     GridPane grid = new GridPane(); 
     MaximizeInAnchorPane(grid); 

     // make column and rows resize 
     for (int i=0;i <5;i++) 
     { 
      ColumnConstraints cConstrain = new ColumnConstraints(); 
      cConstrain.setHgrow(Priority.SOMETIMES); 
      grid.getColumnConstraints().add(cConstrain); 

      RowConstraints rConstrain = new RowConstraints(); 
      rConstrain.setVgrow(Priority.SOMETIMES); 
      grid.getRowConstraints().add(rConstrain); 
     } 

     for (int i=0;i <5;i++) 
     { 
      for (int j=0;j <5;j++) 
      { 
       // create button and put it in an AnchorPane, that will resize it 
       AnchorPane buttonPane = new AnchorPane(); 
       Button button = new Button("Button"); 
       MaximizeInAnchorPane(button); 
       buttonPane.getChildren().add(button); 

       grid.add(buttonPane,i,j); 
      } 
     } 

     rootPane.getChildren().add(grid); 
     primaryStage.setTitle("test"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    private static void MaximizeInAnchorPane(Node toMaximize) 
    { 
     AnchorPane.setTopAnchor(toMaximize, 0.0); 
     AnchorPane.setRightAnchor(toMaximize, 0.0); 
     AnchorPane.setLeftAnchor(toMaximize, 0.0); 
     AnchorPane.setBottomAnchor(toMaximize, 0.0); 
    } 

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

如果您尝试手动调整所有设置,则应该查看SplitPane。这一切都取决于你想如何调整大小。

对我来说,它总是可以帮助玩弄JavaFX Scene Builder JavaFX Scene Builder来弄清楚如何做我想要的布局。

+0

每个按钮代表商店提供的位于数据库中的产品,这些产品均归类。 例如,销售员选择销售苏打水,那么屏幕上将填充所有苏打水,例如可乐,雪碧等。 问题是,并不总是有25种产品,但我将其设置为在超过25的情况下是限制的,除非它们分类不好,否则不太可能。 谢谢你的回答,我会尝试操作de-nested,以便只添加所需按钮的数量。 –