我有两个切换按钮。JavaFX中的ToggleButtons
- 我点击了btn1 // btn1 is on; btn2关闭
- 我点击btn2 // btn2打开; btn1自动关闭...为什么?
有人可以解释这种行为并提供解决方案。
我希望所有的切换按钮都是独立的。
我有两个切换按钮。JavaFX中的ToggleButtons
有人可以解释这种行为并提供解决方案。
我希望所有的切换按钮都是独立的。
正如我提到的,如果你不把ToggleButton
s转换为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());
});
}
但是,我不能让侦听器通用,并使用其中的按钮userdata。我必须为每个按钮执行此操作。我有多达20个按钮。 –
假设我让侦听器是通用的..那么如何让它知道哪个按钮被点击了,哪个userData用于进一步的动作。 –
为您更新了答案。 – DVarga
它与这个问题有关:http://stackoverflow.com/questions/42413313/togglebuttons-and-listeners-in-javafx。答案是我对这个答案的最后一个评论:http://stackoverflow.com/questions/42413313/togglebuttons-and-listeners-in-javafx/42413452#42413452:因为'ToggleGroup'。 – DVarga
你能转发一些关于如何独立听按钮切换动作的链接吗? –