【问题标题】:ToggleButtons in JavaFX [duplicate]JavaFX中的切换按钮[重复]
【发布时间】:2017-07-14 22:27:19
【问题描述】:

我有两个切换按钮。

  1. 我点击了 btn1 //btn1 开启; btn2 已关闭
  2. 我点击了 btn2 //btn2 开启;btn1 自动关闭...为什么??

谁能解释一下这种行为并提供解决方案。

我希望所有的切换按钮都是独立的。

【问题讨论】:

标签: java javafx togglebutton


【解决方案1】:

正如我所提到的,如果您不将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());
    });
}

【讨论】:

  • 但是我不能使监听器通用并在其中使用按钮的用户数据。我必须为每个按钮做这件事。我有多达 20 个按钮。
  • 假设我将监听器设为通用......那么我如何让它知道单击了哪个按钮以及将其 userData 用于进一步操作。
  • 为你更新了答案。
猜你喜欢
  • 2018-09-23
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 2017-05-08
  • 2014-12-16
  • 2015-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多