更改项目时删除JavaFx ListView侦听器
我最近一直面临一个问题;我使用HBox的列表视图来显示文本和复选框。我使用onMouseClicked侦听器在您单击列表中的某个项目时选中复选框。问题是,当我通过清除和设置新项来更改项时,侦听器不再工作。我试图重新设置听者,但没有任何改变。有没有办法解决这个问题 换句话说,我得到了这个。当我点击列表中的某个项目时,它会选中复选框 但是,当我试图更改列表项时,它会删除侦听器。我无法再单击该项目以选中该框。像这样` 我已经在这个函数中添加了一次侦听器:更改项目时删除JavaFx ListView侦听器,listview,javafx,listener,Listview,Javafx,Listener,我最近一直面临一个问题;我使用HBox的列表视图来显示文本和复选框。我使用onMouseClicked侦听器在您单击列表中的某个项目时选中复选框。问题是,当我通过清除和设置新项来更改项时,侦听器不再工作。我试图重新设置听者,但没有任何改变。有没有办法解决这个问题 换句话说,我得到了这个。当我点击列表中的某个项目时,它会选中复选框 但是,当我试图更改列表项时,它会删除侦听器。我无法再单击该项目以选中该框。像这样` 我已经在这个函数中添加了一次侦听器: public void ajouterEc
public void ajouterEcouteur(Interface inter)
{
inter.list.setOnMouseClicked(new ActionListe());
}
private class ActionListe implements EventHandler<MouseEvent>
{
@Override
public void handle(MouseEvent e)
{
Interface temp = listInterfaces.get(vue.tabPane.getSelectionModel().getSelectedIndex());
int index = temp.list.getSelectionModel().getSelectedIndex();
if(listHbox.get(index).getChildren().get(0) instanceof CheckBox)
{
if(!((CheckBox) listHbox.get(index).getChildren().get(0)).isSelected())
{
((CheckBox) listHbox.get(index).getChildren().get(0)).setSelected(true);
} else {
((CheckBox) listHbox.get(index).getChildren().get(0)).setSelected(false);;
}
}
}
}
public void ajournetuer(接口间)
{
setOnMouseClicked(newActionListe());
}
私有类ActionListe实现EventHandler
{
@凌驾
公共无效句柄(MouseEvent e)
{
Interface temp=listInterfaces.get(vue.tabPane.getSelectionModel().getSelectedIndex());
int index=temp.list.getSelectionModel().getSelectedIndex();
if(listHbox.get(index.getChildren().get(0)instanceof复选框)
{
if(!((复选框)listHbox.get(index).getChildren().get(0)).isSelected())
{
((复选框)listHbox.get(index.getChildren().get(0)).setSelected(true);
}否则{
((复选框)listHbox.get(index.getChildren().get(0)).setSelected(false);;
}
}
}
}
另外,当我像这样在复选框中选择一个项目时,我一直在尝试重新添加侦听器
if(e.getSource() == interface1.cb)
{
if(!interface1.list.getItems().isEmpty())
{
ObservableList<HBox> listhbox = interface1.list.getItems();
for (HBox hBox : listhbox) {
ObservableList<Node> list = hBox.getChildren();
if(list.get(0) instanceof CheckBox && ((CheckBox) list.get(0)).isSelected())
{
interface1.perm.add(((Text) list.get(1)).getText().trim());
}
}
}
interface1.list.setOnMouseClicked(new ActionListe());
recherchePermissions();
}
if(e.getSource()==interface1.cb)
{
如果(!interface1.list.getItems().isEmpty())
{
ObservableList listhbox=interface1.list.getItems();
用于(HBox HBox:listhbox){
ObservableList=hBox.getChildren();
if(list.get(0)instanceof CheckBox&((CheckBox)list.get(0)).isSelected())
{
interface1.perm.add(((Text)list.get(1)).getText().trim());
}
}
}
interface1.list.setOnMouseClicked(新建ActionListe());
recherchePermissions();
}
我不知道为什么它不起作用。如果有,请告诉我!
谢谢
-Nic
- 抱歉的链接,我需要的图像声誉*