私はRadioButton
で作業しており、後でそれらを識別するためにsetUserData
メソッドを使用しようとしています。この話題について自分自身を教育した後、私はの参照を使用してsetUserData
、Toggle
の参考文献を使用してgetUserData
をこのOracle article(例4-4)と同様に使用できると考えていました。RadioButton // setUserDataとgetUserDataが期待どおりに動作しない
今、これは私の望むやり方ではうまくいかず、多くの不満を招いています。私は発見した、私は同じを得ることができないことを発見したuserData
group.getSelectedToggle()
を使用した後に返される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