如何 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]);
}
我是 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]);
}