我有这段代码可以从选定的ToggleGroup
中获取值。
但是,当我运行此代码时,我得到一个空列表。我似乎不知道该怎么解决。
public TestPane(TestService service) {
this.service = service;
this.setPrefHeight(300);
this.setPrefWidth(750);
this.setPadding(new Insets(5, 5, 5, 5));
this.setVgap(5);
this.setHgap(5);
questionField = new Label();
vragen = service.getAllQuestions();
Question question = vragen.iterator().next();
questionField.setText(question.getQuestion());
vragen.remove(question);
add(questionField, 0, 0, 1, 1);
statementGroup = new ToggleGroup();
Set<String> statements = question.getStatements();
System.out.println(statements);
int i = 1;
for (String st : statements) {
radio = new RadioButton(st);
radio.setText(st);
radio.setUserData(st);
radio.setToggleGroup((ToggleGroup) statementGroup.getUserData());
add(radio, 0, i++);
}
submitButton = new Button("Submit");
add(submitButton, 0, i);
submitButton.setOnAction(new SubmitHandler(this,service));
}
public List<String> getSelectedStatements() {
List<String> selected = new ArrayList<String>();
if (statementGroup.getSelectedToggle() != null) {
selected.add(statementGroup.getSelectedToggle().getUserData().toString());
}
return selected;
}
答案 0 :(得分:1)
以下行不正确:
radio.setToggleGroup((ToggleGroup) statementGroup.getUserData());
正确的呼叫应该是:
radio.setToggleGroup(statementGroup);
要回答“为什么”的问题:getSelectedToggle
的{{1}}方法始终返回null,因为没有与之关联的切换,如
ToggleGroup
返回(ToggleGroup) statementGroup.getUserData()
,因此实际上将执行null
,这意味着:radio.setToggleGroup(null)
没有切换组。