【发布时间】:2019-07-23 11:33:43
【问题描述】:
我有一个 java 程序,我没有编写代码,我正在逆向/更新以添加一些急需的功能。
该程序根据 /input 中的一些 csv 文件生成两个 ListView,list1:NameEntry 和 list2:GroupEntry。
NameEntry 包含带有相应复选框的用户名列表。 GroupEntry 包含一长串用户角色及其复选框。
我当前的任务是向 GUI 添加一个“选择所有角色”复选框,将所有 GroupEntry 角色项设置为“真”。这已成功完成。
我的问题是向 ListView 或单个复选框项添加 onChanged() 侦听器,以便在手动取消选中一个或多个角色的情况下禁用“设置所有角色”切换。
@FXML
public void setAllRoles()
{
ObservableList<GroupEntry> groups = this.list2.getItems();
if (this.allRoles) {
this.allRoles = false;
for (GroupEntry item : groups) {
item.setSelected(new SimpleBooleanProperty(false));
this.list2.refresh();
}
} else {
this.allRoles = true;
for (GroupEntry item : groups) {
item.setSelected(new SimpleBooleanProperty(true));
item.addListener(new ListChangeListener<GroupEntry>() {
public abstract onChanged(ObservableValue<? extends GroupEntry> ov,
Boolean old_val, Boolean new_val) {
//System.out.println(item.isSelected());
allRoles = false;
}
});
}
this.list2.refresh();
}
}
在尝试编译控制器 .class 文件时,我收到以下错误:
invalid method declaration; return type required
public abstract onChanged(ObservableValue<? extends GroupEntry> ov,
^
我也尝试过不使用抽象,但编译器返回相同的错误。
这都是javafx。有谁知道问题可能是什么或有任何明确的示例/指南?我已经阅读了无数的文档页面,但似乎无法解决这个简单的错误。我对Java相当陌生,但不是编码。
提前非常感谢!
【问题讨论】:
-
不相关:永远不要使用 listView.refresh(或任何其他虚拟化控件的刷新) - 如果似乎需要它,那么您的设置很可能有问题!
-
当然 ;) 重复:如果你需要它,设置中有问题(不管是谁写的;)
标签: java listview javafx checkbox changelistener