所以我对Java很陌生,正在开发一个QuizFrame项目,以此来改善FX。代码仍然是一项正在进行的工作,但我的主要问题是:如何将单选按钮空间化?
当我在Swing中进行操作时,按钮似乎自动间隔开来,但这里只有一个单选按钮,所有选项都叠在一起。
以下是代码:
公共类QuizFrame2扩展了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);
}
}
答案 0 :(得分:0)
您将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]);
}