如何 space 单选按钮

How to space radioButtons

我是 Java 的新手,并且正在从事一个 QuizFrame 项目,以此来更好地使用 FX。该代码仍在进行中,但我的主要问题是:如何 space 单选按钮?

当我在 Swing 中做的时候,按钮似乎自动 spaced 自己,但在这里它只是一个单选按钮,所有选项都堆叠在一起。

代码如下:

public class QuizFrame2 extends Application {

    RadioButton[] optionButtons;
    TextArea questionArea;
    Button submitButton;
    Question[] questions;
    int currQuestion;
    Pane questionPanel;
    String[] choices;
    TextArea resultArea;
    
    final int NUM_OPTIONS = 4;
    
    @Override
    public void start(Stage primaryStage) throws Exception {
        
        GridPane grid = new GridPane();
        grid.setPadding(new Insets(10, 10, 10, 10));
        grid.setVgap(5);
        grid.setHgap(5);
        
        questions = new Question[2];
        questions[0] = new Question();
        questions[1] = new Question("What is 1+1?", 
           new String[]{"1", "2", "3", "4"}, "2");
        
        currQuestion = 0;
        
        questionArea = new TextArea();
        questionArea.setText(questions[currQuestion].getQuestion());
        submitButton = new Button();
        submitButton.setText("Submit");
        
        questionArea.setPrefSize(500, 50);
        
        ToggleGroup bG = new ToggleGroup();
        
        RadioButton[] optionsButton = new RadioButton[NUM_OPTIONS];
        questionPanel = new Pane();
        
        for(int i = 0; i < optionsButton.length; i++)
        {

         optionsButton[i] = new RadioButton(questions[currQuestion].getOption(i));
         optionsButton[i].setToggleGroup(bG);
         questionPanel.getChildren().add(optionsButton[i]);
        }
        
        submitButton.setOnAction(new EventHandler<ActionEvent>()
                {

                    @Override
                    public void handle(ActionEvent event) {
                        // TODO Auto-generated method stub
                        
                    }
                });

        GridPane.setConstraints(submitButton, 0, 80);
        GridPane.setConstraints(questionArea, 0, 0);
        GridPane.setConstraints(questionPanel, 0, 3);
        
        grid.getChildren().add(questionPanel);
        grid.getChildren().add(questionArea);
        grid.getChildren().add(submitButton);
        
        Scene scene = new Scene(grid, 500, 500);

        primaryStage.setTitle("TextArea Input");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    
    public static void main(String[] args) 
    {
        launch(args);
    }
}

您将 RadioButton 放在没有布局的通用 Pane 中。您需要使用特定的 Pane 子类来完成您需要的布局。

例如,您可以使用 VBox:

questionPanel = new VBox();

for(int i = 0; i < optionsButton.length; i++)
{

 optionsButton[i] = new RadioButton(questions[currQuestion].getOption(i));
 optionsButton[i].setToggleGroup(bG);
 questionPanel.getChildren().add(optionsButton[i]);


}