JavaFX:如何创建两列按钮?
我正在尝试创建一个电梯按钮板模拟器,按钮标记为1-10,有5行两列。下面是我试图解释的一个例子:JavaFX:如何创建两列按钮?,java,javafx,Java,Javafx,我正在尝试创建一个电梯按钮板模拟器,按钮标记为1-10,有5行两列。下面是我试图解释的一个例子: 9 10 7 8 5 6 3 4 1 2 目前,我的代码有10个按钮,但都合并成一列,我不想。看起来是这样的: 1 1 2 2 3 3 4 4 5 5 下面是我的代码片段:(不要介意注释的部分) @覆盖 公共无效开始(阶段primaryStage){ //获取场景的窗格 setScene(新场景(getPane(),1
9 10
7 8
5 6
3 4
1 2
目前,我的代码有10个按钮,但都合并成一列,我不想。看起来是这样的:
1
1
2
2
3
3
4
4
5
5
下面是我的代码片段:(不要介意注释的部分)
@覆盖
公共无效开始(阶段primaryStage){
//获取场景的窗格
setScene(新场景(getPane(),180600));
//搭建舞台
primaryStage.setTitle(“电梯按钮”);
primaryStage.SetResizeable(假);
primaryStage.show();
}
受保护的窗格getPane(){
窗格=新的VBox(10);
窗格。设置填充(新插图(40));
GridPane grid=新建GridPane();
//对于(int i=row-1;i>=0;i-=2){
//对于(int k=col-1;k>=0;i-=1){
对于(int i=0;i
pane.getChildren().add(buttonsArray[i][k]);
为此:
grid.add(buttonsArray[i][k],k,i);
这就是James_D在评论中的建议。交换意见:
pane.getChildren().add(buttonsArray[i][k]);
为此:
grid.add(buttonsArray[i][k],k,i);
这就是James_D在评论中提出的建议。正如评论和其他答案中所指出的,您可以使用网格窗格来实现您想要实现的目标。该代码应该完成这项工作,包括电梯按钮的正确标签:
@Override
public void start(Stage primaryStage) {
// Get the pane for the scene
primaryStage.setScene(new Scene(getPane(), 180, 600));
// Setup the stage
primaryStage.setTitle("Elevator Buttons");
primaryStage.setResizable(false);
primaryStage.show();
}
protected Pane getPane() {
Pane pane = new VBox(10);
pane.setPadding(new Insets(40));
GridPane grid = new GridPane();
for (int i = 0; i < row; i++) {
for (int k = 0; k < col; k++) {
// Set the button number as text for the button
Button button = new Button(Integer.toString((row * col - 2 * i - 1) + k));
button.setPrefWidth(100);
button.setStyle("-fx-font: 22 arial; -fx-base: LightGray");
// Add the button to the pane and set the handler
grid.add(button, k, i);
button.setOnAction(buttonHandler);
}
}
return grid;
}
@覆盖
公共无效开始(阶段primaryStage){
//获取场景的窗格
setScene(新场景(getPane(),180600));
//搭建舞台
primaryStage.setTitle(“电梯按钮”);
primaryStage.SetResizeable(假);
primaryStage.show();
}
受保护的窗格getPane(){
窗格=新的VBox(10);
窗格。设置填充(新插图(40));
GridPane grid=新建GridPane();
对于(int i=0;i|
正如评论和其他答案中所指出的,您可以使用网格窗格
来实现您想要实现的目标。此代码应该完成这项工作,包括电梯按钮的正确标签:
@Override
public void start(Stage primaryStage) {
// Get the pane for the scene
primaryStage.setScene(new Scene(getPane(), 180, 600));
// Setup the stage
primaryStage.setTitle("Elevator Buttons");
primaryStage.setResizable(false);
primaryStage.show();
}
protected Pane getPane() {
Pane pane = new VBox(10);
pane.setPadding(new Insets(40));
GridPane grid = new GridPane();
for (int i = 0; i < row; i++) {
for (int k = 0; k < col; k++) {
// Set the button number as text for the button
Button button = new Button(Integer.toString((row * col - 2 * i - 1) + k));
button.setPrefWidth(100);
button.setStyle("-fx-font: 22 arial; -fx-base: LightGray");
// Add the button to the pane and set the handler
grid.add(button, k, i);
button.setOnAction(buttonHandler);
}
}
return grid;
}
@覆盖
公共无效开始(阶段primaryStage){
//获取场景的窗格
setScene(新场景(getPane(),180600));
//搭建舞台
primaryStage.setTitle(“电梯按钮”);
primaryStage.SetResizeable(假);
primaryStage.show();
}
受保护的窗格getPane(){
窗格=新的VBox(10);
窗格。设置填充(新插图(40));
GridPane grid=新建GridPane();
对于(int i=0;i|
使用you declare保持按钮,并从getPane()
方法返回。完全摆脱VBox
。使用you declare保持按钮,并从getPane()返回
方法。完全去掉VBox
。那一个不太管用。这一个似乎能做这个把戏:grid.add(buttonsArray[i][k],k,i);谢谢!!这就是我想要的:P我修改了答案:)那一个不管用。这一个似乎能做这个把戏:grid.add(buttonsArray[i][k],k,i);谢谢!!这就是我想要的:P我修改了答案:)