2017-02-24 1 views
0

2つのトグルボタンがあります。JavaFXのToggleButtons

  1. 私はbtn1をクリックしました// btn1はオンです。 btn2はオフです
  2. 私はbtn2をクリックしました// btn2はオンです; btn1は自動的にオフになります...なぜですか?

誰かがこの現象を説明し、解決策を提示できますか?

すべてのトグルボタンを独立させたいです。

+0

この質問に関連しています:http://stackoverflow.com/questions/42413313/togglebuttons-and-listeners-in-javafx答えはこの回答に対する私の最後のコメントです:http://stackoverflow.com/questions/42413313/togglebuttons-and-listeners-in-javafx/42413452#42413452: 'ToggleGroup'のためです。 – DVarga

+0

ボタンのトグル動作を個別に聞く方法に関するいくつかのリンクを転送できますか? –

答えて

1

私が述べたように、あなたは別にトグルのselectedPropertyを聞くことができるToggleGroupToggleButton Sを入れていない場合:

ToggleButton tb1 = new ToggleButton("ToggleButton1"); 
ToggleButton tb2 = new ToggleButton("ToggleButton2"); 

tb1.selectedProperty().addListener(((observable, oldValue, newValue) -> { 
    System.out.println(tb1.getText() + " changed from " + oldValue + " to " + newValue); 
    System.out.println("Taking a nap!"); 
})); 

tb2.selectedProperty().addListener(((observable, oldValue, newValue) -> { 
    System.out.println(tb2.getText() + " changed from " +oldValue + " to " + newValue); 
    System.out.println("Working hard!"); 
})); 

を更新:あなたもonActionPropertyを使用することができます。

for (int i = 0; i< 20; i++) { 
    ToggleButton tb = new ToggleButton("ToggleButton"+i); 
    tb.setUserData("UserData"+i); 
    tb.setOnAction(e -> { 
     System.out.println(tb.getText() + " - Selected: " + tb.isSelected() 
      + "; UserData: " + tb.getUserData()); 
    }); 
} 
+0

しかし、私はリスナーを一般的にして、そこにボタンのユーザデータを使用することはできません。私は各ボタンのためにそれを行う必要があります。私は最大20のボタンを持っています。 –

+0

リスナーをジェネリックにしたとすると、どのボタンがクリックされたのか、それ以降の操作にuserDataが使用されるのかをどのようにして知ることができますか? –

+0

あなたの答えが更新されました。 – DVarga

関連する問題