该
onToggleClick方法中的所有代码都应转到
initialize控制器的方法中。
现在,在第一个切换上单击,为设置数据,
ToggleButton然后将它们放入组中,然后在上设置侦听器
ToggleGroup。因此,仅在第二次切换单击时执行此侦听器,在此您再次设置数据,甚至更糟的是,添加了另一个侦听器。
第三次单击时,将执行这两个侦听器,并添加另一个侦听器…,因此控制台上打印的“ .... apk”列表不断增加。
创建所有节点后,所有这些操作仅应发生一次:此位置是
initialize控制器的方法。
如果您想拥有独立
ToggleButton的,只需将
ToggleButtons放到中
ToggleGroup,然后就可以分别收听
selectedProperty切换的了:
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()); });}


