togglegroup.getSelectedToogle() 始终 returns 空 JavaFX
togglegroup.getSelectedToogle() always returns null JavaFX
我有这段代码可以从选定的 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;
}
下面这行是不正确的:
radio.setToggleGroup((ToggleGroup) statementGroup.getUserData());
正确的调用是:
radio.setToggleGroup(statementGroup);
回答问题 "why":ToggleGroup
returns 的 getSelectedToggle
方法始终为 null,因为没有与之关联的切换,因为
(ToggleGroup) statementGroup.getUserData()
returns null
,所以实际上radio.setToggleGroup(null)
会被执行,也就是说:RadioButton
没有切换组。
我有这段代码可以从选定的 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;
}
下面这行是不正确的:
radio.setToggleGroup((ToggleGroup) statementGroup.getUserData());
正确的调用是:
radio.setToggleGroup(statementGroup);
回答问题 "why":ToggleGroup
returns 的 getSelectedToggle
方法始终为 null,因为没有与之关联的切换,因为
(ToggleGroup) statementGroup.getUserData()
returns null
,所以实际上radio.setToggleGroup(null)
会被执行,也就是说:RadioButton
没有切换组。