あなたは使用して、選択したトグルのインデックスを取得することができます:
toggleGroup.getToggles().indexOf(toggleGroup.getSelectedToggle());
そして、選択されたトグルのテキストを使用して:
((RadioButton) toggleGroup.getSelectedToggle()).getText();
を選択したトグルする変更リスナーにコードを配置することにより選択したトグルがいつ変更されたかを監視し、必要に応じてアクションを実行することができます。
サンプルアプリケーション
import javafx.application.Application;
import javafx.collections.*;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import java.util.stream.*;
public class ToggleIndexer extends Application {
@Override
public void start(final Stage stage) throws Exception {
ToggleGroup toggleGroup = new ToggleGroup();
ObservableList<RadioButton> buttons = IntStream.range(0, 5)
.mapToObj(i -> new RadioButton("Radio " + i))
.collect(Collectors.toCollection(FXCollections::observableArrayList));
toggleGroup.getToggles().setAll(buttons);
Label selectedIndex = new Label();
selectedIndex.setFont(Font.font("monospace"));
Label selectedItem = new Label();
selectedItem.setFont(Font.font("monospace"));
toggleGroup.selectedToggleProperty().addListener((observable, oldValue, newValue) -> {
if (newValue == null) {
selectedIndex.setText("");
selectedItem.setText("");
} else {
final int selectedIndexValue =
toggleGroup.getToggles().indexOf(newValue);
selectedIndex.setText("Selected Index: " + selectedIndexValue);
final String selectedItemText =
((RadioButton) toggleGroup.getSelectedToggle()).getText();
selectedItem.setText("Selected Item: " + selectedItemText);
}
});
VBox layout = new VBox(8);
layout.setPadding(new Insets(10));
layout.setPrefWidth(250);
layout.getChildren().setAll(buttons);
layout.getChildren().addAll(selectedItem, selectedIndex);
stage.setScene(new Scene(layout));
stage.show();
}
public static void main(String[] args) throws Exception {
launch(args);
}
}
私は私はあなたが求めているものだと思いますが、将来的にはこのような質問に対して[MCVE]を提供するために、おそらく最高である(例えば、Aコンパイル可能なサンプルで、変更や追加なしに問題を複製するためにコピーして貼り付けることができます)、より有益な回答を得る可能性が高くなります。 – jewelsea