2017-05-16 6 views
0

特定のRadioButtonが押されたときにインデックスを見つけたり、RadioButtonのときにmyBuns.get(i)を渡すことがあったかどうかは疑問でした。以下のコードを使用してラジオボタンを作成するクリックしたRadioButtonのインデックスまたは情報の検索方法

RadioButton rButton; 
for (i = 0; i < myBuns.size(); i ++){ 
     rButton = new RadioButton("" + myBuns.get(i)); 
     rButton.setToggleGroup(bunGroup); 
     rButton.setOnAction(this); 
     this.getChildren().add(rButton); 
    } 

ありがとうございました!

+0

私は私はあなたが求めているものだと思いますが、将来的にはこのような質問に対して[MCVE]を提供するために、おそらく最高である(例えば、Aコンパイル可能なサンプルで、変更や追加なしに問題を複製するためにコピーして貼り付けることができます)、より有益な回答を得る可能性が高くなります。 – jewelsea

答えて

2

あなたは使用して、選択したトグルのインデックスを取得することができます:

toggleGroup.getToggles().indexOf(toggleGroup.getSelectedToggle()); 

そして、選択されたトグルのテキストを使用して:

((RadioButton) toggleGroup.getSelectedToggle()).getText(); 

を選択したトグルする変更リスナーにコードを配置することにより選択したトグルがいつ変更されたかを監視し、必要に応じてアクションを実行することができます。

サンプルアプリケーション

sample image for toggle selection

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); 
    } 
} 
+0

それを考え出した。ありがとう!! – bammy

関連する問題