RadioButton
과 함께 작업 중이며 나중에 식별하기 위해 setUserData
메서드를 사용하려고합니다. 이 주제에 대한 교육을 마친 후, 참조 (예 4-4)와 마찬가지로 나중에 RadioButton
참조와 getUserData
Toggle
참조를 사용하여 setUserData
을 참조 할 수 있다고 생각했습니다.RadioButton // setUserData 및 getUserData가 예상대로 작동하지 않습니다.
이제는 이것이 내가 원하는 방식으로 작동하지 않아서 많은 좌절감을 불러 일으켰습니다. 나는 같은 것을 얻을 수 없다는 것을 발견했다. userData
을 을 사용한 후에 반환되는 Toggle
참조에 적용 할 때 RadioButton
참조를 사용하여 설정했다. 왜 아무도 알지 못해? 또는이 문제를 어떻게 우아하게 피할 수 있습니까?
내 SampleController.java 파일에서 내 문제를 명확히하려고 노력했습니다. 아래에서 확인할 수 있습니다. 당신이 보게되는 for loop
은 ...
내 Main.java 내가 생각 해낸 최초의 생각이지만, 확실히 적절한 해결책이 아니다 :
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
Parent root = FXMLLoader.load(getClass().getResource("/application/sample.fxml"));
primaryStage.setTitle("Demo");
primaryStage.setScene(new Scene(root, 400, 400));
primaryStage.show();
} catch (Exception e) {
System.out.println(e.toString() +
"\n" + e.getCause());
}
}
public static void main(String[] args) {
launch(args);
}
}
내 sample.fxml :
<VBox id="VBox" prefHeight="200" prefWidth="320"
xmlns:fx="http://javafx.com/fxml/1"
fx:controller="application.SampleController">
<Label text="Select a time, then press the button" />
<fx:define>
<ToggleGroup fx:id="group" />
</fx:define>
<RadioButton id="rBtn1" text="Button 1" toggleGroup="$group" />
<RadioButton id="rBtn2" text="Button 2" toggleGroup="$group" />
<RadioButton id="rBtn3" text="Button 3" toggleGroup="$group" />
</VBox>
내 SampleController.java :
public class SampleController implements Initializable {
@FXML
ToggleGroup group = new ToggleGroup();
RadioButton rBtn1 = new RadioButton();
RadioButton rBtn2 = new RadioButton();
RadioButton rBtn3 = new RadioButton();
@Override
public void initialize (URL url, ResourceBundle rb) {
rBtn1.setUserData("Button 1");
rBtn2.setUserData("Button 2");
rBtn3.setUserData("Button 3");
System.out.println(rBtn1.getUserData()); // prints 'Button 1'
System.out.println(group.getToggles().get(0).getUserData()); // prints 'null'
List<Toggle> toggles = group.getToggles();
int i = 1;
for (Toggle t : toggles) {
t.setUserData("Button " + i);
i++;
}
System.out.println(group.getToggles().get(0).getUserData()); // prints 'Button 1'
}
}
젠장,이 방법은 간단합니다. 제가 관찰했지만 빠른 수정으로 해결할 수있는 몇 가지 다른 작은 문제는 훨씬 명확합니다. 고마워요! – barbarossa