我的JavaFx FXML应用程序有问题。
当我在表单上选中复选框时,我想根据单击的复选框执行一个方法。是否有任何方法可以将复选框的名称传递给该方法,以便对其执行一些有条件的工作?
我有两个复选框,只能选择一个。当我单击其中一个时,应取消选择另一个,反之亦然。显然,下面的代码将无法工作,因此我希望传递被单击对象的名称。
任何帮助都将不胜感激,非常感谢。
@FXML private void updateRcs(){
if (chkRcsuri.isSelected()){
chkRcsuri2.setSelected(false);
}
if (chkRcsuri2.isSelected()){
chkRcsuri.setSelected(false);
}
}
所以我试图做类似的事情,除了我有多个复选框,然后一个复选框与其他复选框一起使用是荒谬的。我创建了两个独立的侦听器,并将一个通用的设置为主框,一个专用的设置为例外。
@FXML private CheckBox redCB = new CheckBox();
@FXML private CheckBox blueCB = new CheckBox();
@FXML private CheckBox greenCB = new CheckBox();
@FXML private CheckBox whiteCB = new CheckBox();
@FXML private CheckBox blackCB = new CheckBox();
@FXML private CheckBox colorlessCB = new CheckBox();
//assigning listeners
redCB.selectedProperty().addListener(colorCheckChange);
blueCB.selectedProperty().addListener(colorCheckChange);
greenCB.selectedProperty().addListener(colorCheckChange);
whiteCB.selectedProperty().addListener(colorCheckChange);
blackCB.selectedProperty().addListener(colorCheckChange);
colorlessCB.selectedProperty().addListener(colorlessCheckChange);
//note: this is the only different one^^^
//making listeners
ChangeListener colorCheckChange = new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> ov,
Boolean old_val, Boolean new_val) {
if (new_val)
colorlessCB.setSelected(false);
}};
ChangeListener colorlessCheckChange = new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> ov,
Boolean old_val, Boolean new_val) {
if (new_val)
{
redCB.setSelected(false);
blueCB.setSelected(false);
greenCB.setSelected(false);
blackCB.setSelected(false);
whiteCB.setSelected(false);
}
}
};
第一种基本上只是确保在尝试选择其他颜色时未选择无颜色的SCB,反之亦然。这样还可以避免取消选择一个,而另一个自动重新选择自身的问题。
单选按钮不会给你一个互斥的选择吗?只要确保你设置的组名是相同的——选择一个会自动取消选择另一个,你可以在动作事件中放入额外的逻辑。
比尝试围绕复选框重写相同的功能要好。
您可以使用更改跟踪或使用JavaFX的事件处理机制<有这样的复选框,
final CheckBox chk1 = new CheckBox("chk 1");
final CheckBox chk2 = new CheckBox("chk 2");
变更跟踪
chk1.selectedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
chk2.setSelected(!newValue);
}
});
chk2.selectedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
chk1.setSelected(!newValue);
}
});
使用事件处理
EventHandler eh = new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
if (event.getSource() instanceof CheckBox) {
CheckBox chk = (CheckBox) event.getSource();
System.out.println("Action performed on checkbox " + chk.getText());
if ("chk 1".equals(chk.getText())) {
chk2.setSelected(!chk1.isSelected());
} else if ("chk 2".equals(chk.getText())) {
chk1.setSelected(!chk2.isSelected());
}
}
}
};
chk1.setOnAction(eh);
chk2.setOnAction(eh);
主要内容:创建一个选择框,示例,实例-2JavaFX选择框允许用户在几个选项之间快速选择。 创建一个选择框 我们可以使用中的构造函数来创建对象。 以下代码显示了如何使用其构造函数创建和填充选择框。 列表项是从可观察的列表来创建的。 我们还可以使用一个空的选择框使用它的默认构造函数,并使用方法设置列表项。 上面的代码还向选择框中添加了一个分隔符对象。分隔符分隔控件项目。 示例 上面的代码生成以下结果。 实例-2 以下代码显示了如何在中填充
主要内容:创建复选框,复选框状态,示例复选框允许用户进行多项选择。例如,当订购披萨时,可以添加多个调味料。单选按钮或切换按钮用于单选或无选择。 创建复选框 我们可以使用中的构造函数来创建的对象。 创建不带标题的复选框,如下代码所示 - 要创建带有字符串标题的复选框,如下代码所示 - 创建复选框后,我们可以更改其文本并将其选中。 复选框状态 可以使用来表示三个状态: Yes No Not Applicable(不适用) “不适用”状态是
我有一个带有方法的model类,它用@preupdate进行了注释。此方法调用我的方法: 我的实现:
问题内容: 是否有机会检测用户为元素类型HTML所做的每个文件选择? 之前曾多次问过这个问题,但是如果用户再次选择相同的文件,通常不会建议该事件。 问题答案: 的值设置到每个事件。即使选择了相同的路径,这也会重置的值并触发事件。 注意:如果文件以’C:\ fakepath'为前缀是正常的。这是一项安全功能,可防止JavaScript知道文件的绝对路径。浏览器仍然内部知道它。
我正在使用JavaFx,我有一个用sceneBuilder创建的表视图,它包含3列,其中一列用于复选框,还有一个名为print\u tab的按钮,我想在单击此按钮时使用复选框选择行- 我读了许多关于回调复选框的表列的示例,但不知道如何做到这一点。 这是控制器: 在模型类上,我有以下代码: } fxml代码: 任何想法? 编辑: 我试过这样做,但即使我勾选了一些复选框,我总是得到错误的结果,不是真的
问题内容: 有时候,这种AJAX会触发,有时却不会,我来解释一下。 habit.js 仅在加载显示页面并刷新它之后才会触发,以便终端看起来像这样: 仅加载显示页面一次将无法完成工作,因为选中标记不会触发AJAX(请注意上面的所有GET和下面的GET缺少,我认为这与涡轮链接有关)。 该 显示页面 称为AJAX 这就是AJAX触发的 源代码days_missed_controller.rb 。 这是