我有一个Java程序,我没有编写我要反向/更新的代码,以便添加一些非常需要的功能。
该程序基于在/ input中找到的某些csv文件生成两个ListView,即list1:NameEntry和list2:GroupEntry。
NameEntry包含带有相应复选框的用户名列表。 GroupEntry包含一长串用户角色及其复选框。
我当前的任务是在GUI中添加一个“选择所有角色”复选框,以将所有GroupEntry角色项设置为“ true”。这成功完成了。
我的问题是将onChanged()侦听器添加到ListView或单个复选框项,以在手动取消选中一个或多个角色的情况下禁用“设置所有角色”切换。
@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();
}
}
当尝试编译controller .class文件时,出现以下错误:
invalid method declaration; return type required
public abstract onChanged(ObservableValue<? extends GroupEntry> ov,
^
我也尝试过不使用摘要,但是编译器会返回相同的错误。
这都是javafx。有谁知道这个问题可能是什么,或者有任何清晰的示例/指南?我读了无数的文档页面,但似乎无法绕过这个简单的错误。我对Java相当陌生,但没有编码。
非常感谢!
答案 0 :(得分:0)
这是一个简单的解决方案。您在方法声明中缺少类型。例如void
。 onChanged
应该是方法,而不是构造函数。同时删除abstract
限定词。
public void onChanged(ObservableValue<? extends GroupEntry> ov
编辑
ListChangeListener
是一个界面。您需要正确地覆盖onChanged
方法。该方法需要与定义中相同的参数:
void onChanged(ListChangeListener.Change<? extends E> c)
答案 1 :(得分:0)
经过大量的试验和反复试验,下面的代码现在可以正常工作,同时提供正确的视觉反馈,请使用checkbox.setIndeterminate()并实现与“ item.isSelected()。getValue”配对的“当前阈值”,“最大阈值”整数变量()”条件触发复选框状态。当然,有更清洁的实施方法,但这对我有用。固定为:
C11
感谢那些捐出2美分的人! 保重stackoverflow!